Django视图层
Posted yangzhizong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django视图层相关的知识,希望对你有一定的参考价值。
知识点一:Django2.0中path与re_path的应用
1.from django.urls import path,re_path
2.path不支持正则,精准匹配
3.re_path用法就像1.1中的url(但是可以指定)
urls路由的配置:
from django.urls import path,re_path from app01 import views urlpatterns = [ url(r‘^admin/‘, admin.site.urls), #re-path支持正则(类似于url) re_path(r‘^test01/‘, views.test01), #path 不支持正则,精准匹配,是什么,就匹配什么,跟它有一点不一样,就找不到 path(r‘test02/‘, views.test02), #可以限定test03/路径后面写的,即转化器名字的类型 path(r‘test03/<int:year>‘,views.test03), re_path(r‘^$‘,views.index), #http://127.0.0.1:8000/ 只输这个的时候默认跳转到主页 re_path(r‘‘, views.error), #如果没有匹配到就显示网页走丢提示 ]
views视图的设置:
from django.shortcuts import render,HttpResponse,redirect # Create your views here. def test01(request): return HttpResponse(‘这是test01界面‘) def test02(request): return HttpResponse(‘这是test02界面‘) #必须和路由里面定义的参数名字一样 def test03(request,year): print(year,type(year)) return HttpResponse(‘这是test03界面‘) def index(request): return HttpResponse(‘这是index主页‘) def error(request): return HttpResponse(‘地址错误,走丢了,亲!‘)
Django默认支持以下5个转化器:
- str,匹配除了路径分隔符(
/
)之外的非空字符串,这是默认的形式 - int,匹配正整数,包含0。
- slug,匹配字母、数字以及横杠、下划线组成的字符串。
- uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
- path,匹配任何非空字符串,包含了路径分隔符(/)(不能用?)
自定义类型转换:
定义class类
#导入模块register_converter from django.urls import path,re_path,include,register_converter #定义类(名字都是固定写法) class Test: #正则限定url输入的位数格式 regex = ‘[0-9]{4}‘ #to_python:获取url输入的内容, def to_python(self, value): #value是<>里面输入的内容:即<int:year> # 下面可以对着数据再做一些其他的而处理 value=value+‘aaa‘ # return int(value) #还可以对返回给到视图层的value值再做修改 return value #return的值会传给视图函数接收 #to_url用于反向解析 def to_url(self, value): return ‘%04d‘ % value #因为上面是要匹配4个数字,这里就是如果位数不够会自动补全0 register_converter(Test,‘yyy‘) #(类型,以及重命名后的名字)
路由设置给类传参数:
urlpatterns = [ #<yyy上面重命名的名字:year和视图接收的名字一样> path(r‘index/<yyy:year>‘, views.index), ]
视图层设置:
def index(request,year): print(year,type(year)) return HttpResponse(‘验证自定义转换类型‘)
验证效果如下:
知识点二:MVC和MTV
M T V
models emplate views
M V C(路由+views)
models 模板 控制器
MVC实质就是MTV,Diango框架就是MVC架构
知识点三:视图层
1.request是个对象:
2.form表单里面不定义method=‘’,默认是get请求
3.get与post的使用环境
get:请求数据,请求页面
post:向服务器提交数据
4.request.method 是个数据属性,打印的是请求的类型:例如POST、GET
5.request.GET 字典
6.request.POST 字典
7.http://127.0.0.1:8000 /index/ppp/dddd /?name=lqz
ip地址和端口 路径 参数(数据)
8.request.path 数据属性 打印的是url路径:/index/ppp/dddd
request.get_full_path() 打印的是路径+数据:/index/ppp/dddd/?name=lqz
9.Request.body :输出是post提交的内容,是bytes类型
知识点四:JsonResponse 向前端页面发json格式字符串
以上是关于Django视图层的主要内容,如果未能解决你的问题,请参考以下文章