python基础[18]——使用jdango创建一个简易的博客网站

一、页面实现

  1. index.html
  2. base.html
  3. post.html
  4. header.html
  5. footer.html
<!-- index.html-->
{% extends 'base.html' %}
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>个人博客</title>
</head>
<body>
<h1>欢迎来到我的博客</h1>
{% for post in posts %}
    <hr>
    <p style="font-family: 微软雅黑 ">
    <a href="/post/{{ post.slug }}">{{ post.title }}</a>
    </p>
{% endfor %}
<br>
{{ now }}
</body>
</html>
<div class="mainContext">
    <div class="rightContext">
        {% block title %}欢迎来到我的博客{% endblock %}
        {% block headmessage %}<h3 style="font: 微软雅黑;">文章列表</h3>{% endblock %}
        {% block content %}
        <ul>
            {% for post in posts %}
                <p>
                    <li><a href="/post/{{ post.slug }}">{{ post.title }}</a></li>
                </p>
            {% endfor %}
        </ul>
        {% endblock %}
</div>
</div>
<!-- base.html-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %} {% endblock %}</title>
</head>
<body>
<div class="mainContext">
    <div class="leftContext">
        <h3 style="font: 微软雅黑;">文章分类</h3>
        <ul>
            <li><a href="/tag/?p=唐诗">唐诗</a></li>
            <li><a href="/tag/?p=宋词">宋词</a></li>
            <li><a href="/tag/?p=五言古诗">五言古诗</a></li>
        </ul>
    </div>
    <div class="rightContext">
        <div class="top1">
        {% include 'header.html' %}
    </div>
    <div class="mid2">
        {% block headmessage %} {% endblock %}
        {% block content %} {% endblock %}
    </div>
    <div class="bot3">
        <br/>
        {% include 'footer.html' %}
    </div>
    </div>
</div>
</body>
</html>
<!-- post.html-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>post</title>
</head>
<body>
<a href="http://localhost:8000/">返回上一页</a><br/>
{{ post.body }}
</body>
</html>
<!-- footer.html-->
{% block footer %}
    {% if now %}
        <p style="font-family: 微软雅黑">时间:{{ now }}</p>
    {% else %}
        <p style="font-family: 微软雅黑">如需转载请注明来源</p>
    {% endif %}
{% endblock %}

models.py 数据表的设计

from django.db import models
from django.utils import timezone
from tinymce.models import HTMLField
# Create your models here.
class Post(models.Model):
    title = models.CharField(max_length = 200,verbose_name=u'标题')#标题
    slug = models.CharField(max_length=200,verbose_name=u'文章网址')#文章网址
    body = models.TextField()#文章内容
    tags = models.CharField(max_length=100, verbose_name=u'标签')
    pub_date = models.DateTimeField(default = timezone.now)#发表时间

    #pub_date 以timezone.now的方式让其自动产生时间 在执行需要pytz模块支撑
    class Meta:
        db_table = '博客'
        ordering = ['pub_date']#按照发表时间排序显示顺序依据
        def __str__(self):#设置此类所提供的数据项,显示文章标题
            return self.title

数据表的迁移 在cmd中执行

python manage.py makemigrations
python manage.py migrate

views.py 方法的实现

#初始页面 显示所有文章列表
def homepage(request):
    posts = Post.objects.all().order_by('-pub_date')
    return render(request, 'index.html', locals())
    now = datetime.now()
   #显示文章内容
def show_detail(request,slug):
    try:
        post = Post.objects.get(slug = slug)
        if post != None:
            return render(request,'post.html',locals())
    except:
        return redirect('/')#返回首页
#在views中调用属于同一个标签文章
def search_tag(request): #tag在URL中获取
    tag = request.GET.get('p')
    print(tag)
    try:
        posts = Post.objects.filter(tags=tag)#注意这里写的是filter
        if posts != None:#这里使用的是posts,和index.html中对应
            return render(request,'index.html',locals())
    except:
        print('没找到')

url.py在url中注册路径

from django.conf.urls import url, include
from django.contrib import admin
from django.urls import path
from myblogs import views
#import tinymce
urlpatterns = [
    path('', views.homepage),#进入系统主页
    path('admin/', admin.site.urls),#进入管理员页面
    path('post/<slug:slug>/',views.show_detail),#显示详细信息# 定义拼接地址,获取标签信息
    url(r'^tag/$', views.search_tag)#注意这里使用的是url 和正则表达式 需要前文中引入
    #url(r'^tinymce/', include('tinymce.urls')),  # 这是富文本编辑器
]

在界面中添加css或者是图片

  1. 配置setting

    STATIC_URL = '/static/'
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static'),
    ]
  2. 在界面中引入
    1.方法一
    {% load staticfiles %}
    <title>{% block title %} {% endblock %}</title>
    2.方法二
    {% load staticfiles %}
    <link rel="stylesheet" href="{% static 'index.css' %}">

原文地址:https://www.cnblogs.com/saiminhou/p/11124722.html

时间: 2024-07-28 19:38:46

python基础[18]——使用jdango创建一个简易的博客网站的相关文章

使用Python创建一个简易的Web Server

Python 2.x中自带了SimpleHTTPServer模块,到Python3.x中,该模块被合并到了http.server模块中.使用该模块,可以快速创建一个简易的Web服务器. 我们在C:\Users\%USERNAME%\用户目录下,创建一个html目录,将html/jpg等网页文件拷贝到该目录下,启动一个cmd命令行窗口,进入html目录,执行如下命令即可创建一个简易的Web Server: python -m http.server 8888 图01-使用python创建一个简单的

依赖注入[4]: 创建一个简易版的DI框架[上篇]

本系列文章旨在剖析.NET Core的依赖注入框架的实现原理,到目前为止我们通过三篇文章(<控制反转>.<基于IoC的设计模式>和< 依赖注入模式>)从纯理论的角度对依赖注入进行了深入论述,为了让读者朋友能够更好地理解.NET Core的依赖注入框架的设计思想和实现原理,我们创建了一个简易版本的DI框架,也就是我们在前面文章中多次提及的Cat.我们会上下两篇来介绍这个被称为为Cat的DI框架,上篇介绍编程模型,下篇关注设计实现.[源代码从这里下载] 目录一.DI容器的层

依赖注入[5]: 创建一个简易版的DI框架[下篇]

为了让读者朋友们能够对.NET Core DI框架的实现原理具有一个深刻而认识,我们采用与之类似的设计构架了一个名为Cat的DI框架.在<依赖注入[4]: 创建一个简易版的DI框架[上篇]>中我们介绍了Cat的基本编程模式,接下来我们就来聊聊Cat的设计和实现. 目录一.服务注册:ServiceRegistry 二.DI容器:Cat 三.扩展方法 一.服务注册:ServiceRegistry 由于作为DI容器的Cat对象总是利用预先添加到服务注册来提供对应的服务实例,所以服务注册至关重要.如下

使用EF Code First搭建一个简易ASP.NET MVC网站,允许数据库迁移

本篇使用EF Code First搭建一个简易ASP.NET MVC 4网站,并允许数据库迁移. 创建一个ASP.NET MVC 4 网站. 在Models文件夹内创建Person类. public class Person { public int ID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } } 在Controls文件夹内创建PersonControlle

Docker学习总结(6)——通过 Docker 化一个博客网站来开启我们的 Docker 之旅

通过 Docker 化一个博客网站来开启我们的 Docker 之旅 这篇文章包含 Docker 的基本概念,以及如何通过创建一个定制的 Dockerfile 来 Docker 化Dockerize一个应用. Docker 是一个过去两年来从某个 idea 中孕育而生的有趣技术,公司组织们用它在世界上每个角落来部署应用.在今天的文章中,我将讲述如何通过"Docker 化Dockerize"一个现有的应用,来开始我们的 Docker 之旅.这里提到的应用指的就是这个博客! 什么是 Dock

python网络爬虫入门(一)——简单的博客爬虫

最近,为了微信公众号的图文,上网疯狂的收集和看了一些有深度的新闻和有趣的引人深思的文字评论,并选择了几篇极品发布出去.但感觉一篇一篇的看实在是麻烦死了.想找一个简单的解决办法,看能不能自动把网上的资料收集起来,然后自己用统一筛选.不巧,最近准备学习下网络爬虫相关知识,于是按照网上的教程自己学着试写了一个小小的爬虫,嘻嘻,是用来爬韩寒博客的. 先把完整的代码贴上来,如果朋友们需要试验下,请先安装python相关环境,然后在复制粘贴保存,再按F5运行. #导入urllib库,python访问网页必须

初试Nodejs——使用keystonejs创建博客网站1(安装keystonejs)

我正在阿里云上创建一个简单的个人博客网站,刚好正在尝试NodeJs,决定找一款基于NodeJs的CMS来完成这个工作,最后找到了KeyStoneJS. KeyStoneJS是基于Express和MongoDB的CMS架构,详细介绍参见官网http://keystonejs.com/zh/.本文记录一下keystonejs的安装过程,后续将记录基于keystonejs的二次开发过程. keystonejs的安装过程并不复杂,但由于涉及到node.js,MongoDB,yo等安装,如果某一步陷到坑里

这几天做了一个博客网站

自己学习完Django也该做个博客网站练练手了,在网上找到了追梦人物的Django博客教程,按照教程自己一步一步学着做了一遍.尽管有教程,开发过程中我仍然踩到不少坑,这里简单记录一下. 先贴上追梦人物的教程地址https://www.zmrenwu.com/post/2/     博主的教程写得十分详细,这里真心的向作者说一声谢谢. 博主的开发环境为Windows 10 (64 位),Python 版本为 3.5.2 (64 位),Django 版本为 1.10.6. 我的开发环境是Window

Python 实用爬虫-04-使用 BeautifulSoup 去水印下载 CSDN 博客图片

Python 实用爬虫-04-使用 BeautifulSoup 去水印下载 CSDN 博客图片 其实没太大用,就是方便一些,因为现在各个平台之间的图片都不能共享,比如说在 CSDN 不能用简书的图片,在博客园不能用 CSDN 的图片. 当前想到的方案就是:先把 CSDN 上的图片都下载下来,再手动更新吧. 所以简单写了一个爬虫用来下载 CSDN 平台上的图片,用于在其他平台上更新图片时用 更多内容,请看代码注释 效果演示 Python 源代码 提示: 需要先下载 BeautifulSoup 哦,