Django视图层

Posted yangzhizong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django视图层相关的知识,希望对你有一定的参考价值。

知识点一:Django2.0中pathre_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(rtest02/, views.test02),

    #可以限定test03/路径后面写的,即转化器名字的类型
    path(rtest03/<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视图层的主要内容,如果未能解决你的问题,请参考以下文章

Django视图层之路由配置系统(urls)

Django视图层

Django的视图层

Django之视图层

Django框架----视图层

Django的视图层