Django视图篇
视图
#视图接受web并响应web请求,本质是python中的函数
#响应的内容:网页,JSON数据,重定向,错误视图
url匹配正则的注意事项
1、如果想要从url中获取一个值,需要对正则加小括号
2、匹配正则前方不需要加反斜杠
3、正则前需要加r表示字符串不转义
引入其它url配置
在每个应用中创建urls.py在每个项目中写入自己的url,在对应的工程url中配置下就行
url(r'^',include("myAPP.urls"))
url的反向解析:
如果在视图,模板中使用的硬编码,在url配置发生变化的时候,动态生成连接的地址
解决:在使用连接的识货,通过url配置的名称,动态生成url地址
作用:在使用url模板时
500 服务器出错
400 客户端出错
404 找不到模板,url匹配失败
HttpRequest对象
属性:
path 请求的完整路径
method 请求方式GET,POST
encoding 编码方式utf-8
GET 类似于字典的对象,包含了get请求的所有参数
POST 类似于字典的对象,包含了post请求的所有参数
FILES 类似于字典的对象,包含所有的上传的文件
COOKIES 字典 包含所有的cookie
SESSION 类似字典的对象,表示当前会话
方法:is.ajax() 如果是通过XMLHttpRequest对象发起的请求
QuertDict对象,request中的get和post是该对象
# GET获取数据
def get1(request):
a = request.GET.get('a')
b = request.GET.get('b')
c = request.GET.get('c')
return HttpResponse(a+" "+b+" "+c)
# a 对应多个值
def get2(request):
a = request.GET.getlist('a')
a1 = a[0]
a2 = a[1]
c = request.GET.get('c')
return HttpResponse(a1 + " " + a2 + " " + c)
#POST获取数据
def showregist(request):
return render(request,'myAPP/regist.html')
def regist(request):
name = request.POST.get("name")
gender = request.POST.get("gender")
age = request.POST.get("age")
hobby = request.POST.getlist("hobby")
return HttpResponse('{}-{}-{}-{}'.format(name,gender,age,hobby))
#重定向
HttpResponseRedirect()
# 重定向
def redirect1(request):
return HttpResponseRedirect('/sunck/redirect2')
def redirect2(request):
return HttpResponse("我是重定向后")
简写 redirect(to) # to建议使用反向解析
状态保持
session
HTTP请求是无状态的,这时如果需要保持状态一直保持则需要使用session来存储会话数据
模板
if 语句
{%if 表达式1 %}
语句1
{%elif 表达式2 %}
语句2
{%else 表达式3 %}
语句3
{%endif%}
for 语句
#列表为空或者无则执行empty
{%for 表达式1 in 列表 %}
语句1
{%empty%}
语句2
{%endfor%}
comment 语句
# 多行注释
{%comment%}
多行注释
{%endcomment%}
#单行注释
{#注释内容#}
ifequal ifnotequal语句
# 值1 和 值2相等执行
{%ifequal 值1 值2%}
语句
{%endifequal%}
{%ifnotequal 值1 值2%}
语句
{%endifnotequal%}
include语句
{{%include "模板目录"%}}
url语句
{{%url "namespace:name" p1%}}
csrf语句
# 跨站请求伪造,某些恶意网站包含连接,按钮,表单,利用登录用户在浏览器认证,攻击服务器
在setting.py中增加'django.middleware.csrf.CsrfViewMiddleware'
{%csrf_token%}
block extends语句
#用于模板继承
autoescape语句
#用于HTML转义
{%autoescape off%}
{{HTML字符串}}
{%endautoescape %}
{%HTML字符串|safe%}
{%HTML字符串|escape%} #将HTML当成字符串
过滤器 语句
#在显示前执行
# lower upper
{{var | upper}}
# 列表|join : '--'
{{['name','age'] | join:"--"}}
# default
{{test | default : '无'}}
# 根据格式转换日期
{{test | date : 'y-m-d'}}
# escape
{%HTML字符串|escape%} #将HTML当成字符串
反向解析
<a href="{%url 'myAPP:login'%}">登录</a>
<a href="{%url 'myAPP:quit'%}">退出登录</a>