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

Posted saiminhou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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' %">

以上是关于python基础[18]——使用jdango创建一个简易的博客网站的主要内容,如果未能解决你的问题,请参考以下文章

创建一堆卡片

Python Pandas 创建一长串要连接的数据框

我想了解为啥要创建一种类型来处理 Go 中的错误以及您如何决定它应该具有啥基础类型

python脚本调用jdango orm映射的方法

Python学习笔记(四十三)virtualenv (创建一套“隔离”的Python运行环境)

同步对象只创建一次对象