Django实战:搭建个人博客(二)
1. Django工作模式
Django作为一个Web框架,负责接收HTTP请求,返回相应的HTTP相应,具体的,在这个过程中需要解决以下三个问题:
- 如何接收HTTP请求
- 如何处理HTTP请求
- 如何生成HTTP响应
2. 构造视图函数,绑定url
在blog/views.py
中创建首页的视图函数:
from django.shortcuts import render
from .models import Post
# Create your views here.
# 视图函数接收一个HTTP请求,返回一个HTTP response
def index(request):
# 获取数据库中的文章列表,按照创建时间逆序排列
post_list=Post.objects.all().order_by('-createdTime')
# render函数用于渲染模板(可以理解为将数据和静态文件插入html中),返回一个HTTP response,以下三个参数分别代表HTTP请求,模板文件,模板变量
return render(request,'index.html',context={
'post_list':post_list,
})
新建blog/urls.py
文件:
from . import views
from django.urls import path
# 将url与视图函数绑定
urlpatterns = [
path('', views.index, name='index') # 绑定的是在域名+端口的基础上,添加一个空字符串的域名,即主页
]
在tony_blog/urls.py
中用include()
函数导入blog应用的urlpatterns
,这样便于维护:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')) # 此处path函数拼接''与'',仍然是一个字符串
]
3. 修改.html模板,添加模板变量等
模板文件通常放在BASE_DIR/templates/
中,此处使用追梦人物的博客-博客从“裸奔”到“有皮肤”中使用的模板,也可以下载其他好用的模板来使用。
此时项目目录结构如下:
![](http://qn.tonysongwb.top/img/20200912010359.png)
在settings.py
中注册模板文件路径:
关于模板变量与模板标签:
- 用
{{ }}
包裹的是模板变量,是视图函数传值并显示的地方 - 用
{% %}
包裹的是模板标签,类似于函数可以做一些控制操作
向index.html
模板文件导入模板变量,涉及到一些html语法:
1. 用{% for post in post_list %}来传入所有文章,其中的post用于在循环体中代表一个文章变量
2. 向模板传入{{ post.pk }},{{ post.title }},{{ post.category.name }}等模板变量
4. 向模板中添加静态文件
静态文件包括css和js文件以及图片,用于构造页面的样式。分以下三个步骤:
-
存放静态文件的路径
在
blog/
目录下新建static/blog/
用于存放blog应用的静态文件,如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SNj4q59c-1599905658262)(http://qn.tonysongwb.top/img/20200912174447.png)]
-
在
setting.py
中设置静态文件url前缀与路径一致:STATIC_URL = '/static/'
-
在模板中通过
{% static "path" %}
模板标签来引用静态文件,其中static标签的作用是将STATIC_URL与path拼接起来作为静态文件的地址。#注意在文件开头插入{% load static %},载入static模块 <link rel="stylesheet" href={% static "blog/css/bootstrap.min.css" %}>
ctrl/Shift+F5刷新页面,或重启项目,看到页面样式显示正常,说明静态文件导入成功。
知识点总结
- 视图函数
- url绑定
- html模板文件
- 静态文件
参考资料
https://www.cnblogs.com/ouwen-lengyu/p/10917335.html