一些常用的view层包:
from django.http import HttpResponse, HttpResponseRedirect, request
from django.template import loader
from django.shortcuts import render
from django.urls import reverse
两个重用的path配置方法:
第一为正则配置:要注意格式规划以及用$结尾等。
第二为普通带参数,在path写了记得要在view的方法上带上对应的值。
re_path(r'^birthday/(?P<x>\d{1,2})/(?P<y>\d{4})/(?P<z>\d{1,2})$', views.view03),
path('page/<int:n1>/<str:key>/<int:n2>', views.view02),
对应在view层的调用:
def view02(request, n1, key, n2):
if key == 'add':
page = n1 + n2
elif key == 'cheng':
page = n1 * n2
elif key == 'chu':
page = n1 / n2
html = '<h1>hello world!</h1>' + str(page)
return HttpResponse(html)
def view03(request, x, y, z):
html = y + 'year' + x + 'month' + z + 'day'
return HttpResponse(html)
常用的view层return方法:
return HttpResponse(html) 普通的返回
return HttpResponseRedirect('page/01') 重定向返回
如何返回一个网页?
方法一:
# f_html=loader.get_template('test01.html')
# html=f_html.render()
return HttpResponse(html)
这个并不常用
方法二:
return render(request,'test02.html')
这个常用且方便。
补充方法 locals() 可以自动绑定方法内的变量。
list=['u1','u2','u3']
str='acvvvvvvv'
int=80
return render(request,'test01.html',locals())
url反向解析:
like this
path('base',views.block_base,name='base'),
path('bktest03',views.block_test03,name='bkt3'),
path('bktest04/<age>/<name>',views.block_test04,name='bkt4')
绑定之后,在view层就可以用name来替换url
def block_test04(request,age,name):
url=reverse('bkt4',kwargs={'age':1,'name':2})
return HttpResponseRedirect(url)
一些模板层的记录:
普通的传递变量:
{{}}
like
{{dict2}},{{td}}
调用变量中的具体部分:
like
views: # 'list':['a','b','c'],
# 'dict2':{'name':'uu'},
in html中:
{{list.0}}索引,{{dict2.name}}字典名
过滤器:
可以在html中直接对引用的变量进行处理(如大小写等)
in html:
<p>{{str|upper}}</p>
<p>{{int|add:'80'}}</p>
模板层中的if and for:
注意格式{$ for or if$} xxx {$ end for or if $}
like
{% for i in list %}
{% if forloop.first %}
<p>first</p>
{% endif %}
<p>{{ forloop.counter0 }}{{i}}</p>
{% if forloop.last %}
<p>last</p>
{% endif %}
{% endfor %}
模板的继承:
子模版继承父模板:
{% extends 'base.html' %}
注意 html用引号包着
父模板设置可修改内容:
{% block name %}
{% endblock %}
like
{% block bk2 %}
<p>this is content</p>
{% endblock %}
子模版对应修改方法:
{% block bk2 %}
<h1>03html</h1>
{% endblock %}