类视图
from django.views.generic import View
class RegisterView(View):
"""类视图:处理注册"""
def get(self, request):
"""处理GET请求,返回注册⻚⾯"""
return render(request, 'register.html')
def post(self, request):
"""处理POST请求,实现注册逻辑"""
return HttpResponse('这⾥实现注册逻辑')
urls
- 定义类视图需要继承⾃Django提供的⽗类View
- 可使⽤
from django.views.generic import View
或者 fromdjango.views.generic.base import View
导⼊
urlpatterns = [
# 视图函数:注册
# url(r'^register/$', views.register, name='register'),
# 类视图:注册
url(r'^register/$', views.RegisterView.as_view(), name='register'),
]
中间件
- 定义⼀个中间件⼯⼚函数,然后返回⼀个可以别调⽤的中间件
- 中间件⼯⼚函数需要接收⼀个可以调⽤的get_response对象
- 返回的中间件也是⼀个可以被调⽤的对象,并且像视图⼀样需要接收⼀个request对象参数,返回⼀个response对象
def simple_middleware(get_response):
# 此处编写的代码仅在Django第⼀次配置和初始化的时候执⾏⼀次
def middleware(request):
# 此处编写的代码会在每个请求处理视图前被调⽤。
response = get_response(request)
# 此处编写的代码会在每个请求处理视图之后被调⽤。
return response
return middleware
- 定义好中间件后,需要在
settings.py
⽂件中添加注册中间件
执行顺序
- 在请求视图被处理前,中间件由上⾄下依次执⾏
- 在请求视图被处理后,中间件由下⾄上依次执⾏
模板
模板渲染
from django.shortcuts import render
def index(request):
context={'city': '北京'}
return render(request,'index.html',context)
模板语法
{% for item in items %}
{{ item }}
{% endfor %}
{% if ... %}
逻辑一
{% elif ... %}
逻辑二
{% endif %}
- 运算符:
运算符左右两侧不能紧挨变量或常量,必须有空格
{% if a == 1 %} # 正确
{% if a==1 %} # 错误
模板继承
{% block 名称 %}
预留区域,可以编写默认内容,也可以没有默认内容
{% endblock 名称 %}
{% extends "⽗模板路径"%}
{% block 名称 %}
实际填充内容
{{ block.super }}⽤于获取⽗模板中block的内容
{% endblock 名称 %}
评论区