• Django-Views


    视图概述
    Django中的视图主要用来接受web请求,并作出响应
    视图的本质就是一个python中的函数
    视图的相应分为两大类:
        以json数据形式返回
        以网面的形式返回
            重新定向到另一个网页
            错误视图(40x,50x)
    视图相应过程:游览器输入->django获取信息并去掉ip端口,剩下的路径->urls路由匹配->视图相应->回馈到服务器
    
    url配置
    配置流程:setting中指定url配置文件,对应的属性的ROOT_URLCONF
    urlspatterns:一个url实例的列表,全在根配置搞定
        内部由url组成(正则匹配路径)
        url('rLearn/',views.learn)
    导入其他url配置:
        在应用中创建urls.py文件,编写匹配规则,在工程urls.py中进行导入
        导入包含:
            from.django.conf.urls import include
            urlpatterns = [url(r'^xxx',include('APP.urls'))]
        url正则匹配注意事项:
            正则匹配时候从上到下开始遍历,匹配到了就不会继续往后寻找了
            匹配的正则前方不需要加反斜线
            正则前需要加(r)表示字符串不转义

    获取url路径上的参数
    如果需要从url中获取一个值,需要对正则加小括号
    url(r'^grade/(d+)$',views.getStudents),
    注意,url匹配中添加了()取参,在请求调用的函数中必须接收 def getStudent(request,classld):
    如果需要获取url路径中的多个参数,那就添加多个括号,默认按照顺序匹配路径名字
    url(r'^news/(d{4})/(d)+/(d+)$',views.getNews),
    匹配年月日 def getNews(request,year,month,day):

    参数也可以使用关键字参数形式:
    url(r'news/'(?P<year>d{4})/(?P<month>d)+/(?P<day>d+)$,views.getNews)

    路径中的参数使用圆括号()进行获取,限制是一个圆括号对应视图函数中的一个参数
    位置参数按照书写顺序进行排序
    关键字参数 按照参数名称匹配,和顺序就无关了
    参数必须和视图函数中的参数一致(除了默认的requst)

    2020.1.4 未完

    url反向解析:
    在根urls中:
    url(r'^'views/,include('ViewsLearn.urls',namespace = '111')),
    在子urls中:
    url(r'^hello/(+d)',views.hello.name='222'),
    在模板中使用
    <a href ="{%url'111:222' year = 2017%}">Hello</a>
    year的位置如果不指定名称按顺序算,指定名称按=算
    在视图中使用
    HttpResponseRedirect(reverse('view:sayhello',kwargs={}))
    kwargs是字典
    反向解析的优点:
    如果在视图,模板使用硬编码连接,在url配置发生改变时,需要的变更的代码会变多,这样导致代码的结构不稳定不容易维护,使用反向解析可以提高代码的拓展性和可维护性
    反向解析:
    根据跟路由中注册的namespace和在子路由中注册name,这两个参数来动态获取我们的路径
    在模板中使用{%url 'namaspace.name'%}
    如果带有位置参数{%url 'namaspace.name' value1 value2 value3%}
    如果带有关键字参数{%url 'namaspace.name'key1 = value1, key2 = value2%}


    作业:
    班级和学生级联显示:
    班级列表
    班级列表可以点击
    点击之后显示本班的所有学生
    要求:
    路径全部使用反向解析
    在学生列表页添加点击事件
    点击学生进入学生详细
    在详细中,存在删除按钮,点击可以删除
    在学生列表最后,添加输入窗口,可以添加学生


    视图的本质是一个函数
    视图参数:1.一个HttpResponse的实例
    2.通过正则表达式获取过来的参数
    位置:通常在应用下的views.py中定义
    错误视图:1.404视图(页面没有找到)
    2.400视图(客户操作错误)
    3.500视图(服务器内部错误)
    自定义错误视图
    在工程的templates文件夹下创建对应的错误文件
    获取请求路径{{request_path}}
    在文件中自定义自己的错误样式
    注意主要在关闭Debug的情况下可以
    没有关闭的情况下会直接在界面中显示log

    HttpRequest
    服务器在收到Http请求后,会根据报文创建一个HttpResponse对象
    Django框架会自己进行包装,之后传递给视图
    属性:path 请求完整的路径
    method 请求的方式,将用GET,POST
    encoding 编码类型 常见utf-8
    GET 类似字典的参数,包含了get的所有参数
    POST 类似字典的参数,包含了post的所有参数
    FILES 类似字典的参数,包含了上传的文件
    COOKIES 字典,包含了所有的COOKIES
    session 类似字典,表示会话
    方法: is_ajax() 判断是否是ajax(),通常用在移动端和JS中

    print(request.path) /homework/zz/
    print(request.body) b''
    print(request.COOKIES) {'csrftoken': 'VGHcTYr5D3v6doWGPb4IDvAErPG85PMXQBpJf8j24g1IFVN6Jbqyx6ut47esCjly'}
    print(request.FILES) <MultiValueDict: {}>
    print(request.GET) <QueryDict: {}>

    --------------------------------------------------------------------------------------------------------------------在网页中加入一个post

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Student</title>
    </head>
    <body>
    <form action=""method = 'post'>
    <span>Username:</span><input type="text" name = 'username' placeholder="please input your username">
    <button>Submit</button>
    </form>
    </body>
    </html>

    效果图

  • 相关阅读:
    docker中centos7安装ssh服务
    redis加入systemctl服务
    elasticsearch设置执行脚本并添加开机启动 (转)
    CentOS7使用firewalld打开关闭防火墙与端口
    腾讯地图JSAPI开发demo 定位,查询
    C# 开发AliYun(阿里云) 小蜜调用接口代码
    VSCode 开发Core教程
    Rabbit原理理解
    Exceptionless 本地部署
    Visual Studio 2019 自带混淆工具DotFuscator不需要去网络下载
  • 原文地址:https://www.cnblogs.com/SmartCat994/p/12306966.html
Copyright © 2020-2023  润新知