Django视图篇和模板

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 值12%}
   语句
   {%endifequal%}
   {%ifnotequal 值12%}
   语句
   {%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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值