视图:
视图接受web请求,并相应web请求。本质是一个python的函数。
响应有:--->网页:重定向,错误视图
--->json数据
响应的过程:--->浏览器:用户在浏览器中输入网址:http://127.0.0.1/students/1 ---> 输出:网址
--->django框架:获取网址信息,去除IP和端口:students/1 ---> 输出:虚拟路径和文件名
--->URL管理器:把网址给URL管理器,逐个匹配urlpatterns,匹配成功执行对应的视图函数 ---> 输出:函数名
--->视图管理器:找到对应的视图去执行,返回结果给浏览器 --->输出:响应的数据
URL的配置:--->指定根级URL:主项目的settings.py中:ROOT_URLCONF = 'mysite.urls',mysite是主项目的名称
--->urlpatterns:一个url实例的列表,保存的是url(url正则表达式,视图,名称)的url对象,例:
需要注意:
--->如果想从url中获取值,需要在正则表达式中用小括号包围值的部分
--->正则表达式开始的地方不要加'/',在结尾的地方加‘/',这样子项目可以更准确的写正则表达式,这是一种写法习惯
--->正则表达式前加r,利用python语法,可以不加转义
--->引入其他URL的配置:在子项目中创建urls.py文件,在里面定义本项目的url匹配,在主项目的urls.py中include(子项目.urls)
例:主项目的urls.py中:urlpatterns = [path(r'', include('myApp.urls', namespace='myApp'))]
URL的反向解析:如果在视图、模板中使用了硬编码链接,在url配置发生改变时,动态生成链接的地址
--->使用:在使用链接时,通过url配置的名称,动态生成url地址
视图函数:参数列表的第一个参数固定是一个HTTPRequest的实例,后面的参数是通过url的正则表达式小括号获取
--->一般在项目的views.py下定义
--->错误视图:--->404:url匹配不成功找不到网页。在template目录下定义404.html,所有网页的404都可以使用。匹配失败是会给404页面传入request_path参数,代表实际请求的url。配置settings.py:1.DEBUG:如果为True,不会调用404页面,而是返回错误原因,生产环境用False返回404页面,2.ALLOWED_HOSTS=['*'],列表中的网址可以转到404页面。
--->500:服务器发生错误,
--->400:错误发生在客户的操作
HTTPRequest对象:服务器接收到HTTP请求后,框架会根据报文产生该对象,传给视图函数。
--->属性:--->path:请求的完整路径,不包括域名和端口
--->method:请求的方式:post,get
--->encoding:浏览器提交的数据的编码方式
--->GET:类似于字典的对象,包含了GET请求的所有参数
--->POST:类似于字典的对象,包含了POST请求的所有参数
--->FILES:类似于字典的对象,包含了所有上传的文件
--->COOKIES:字典,包含所有的cookie
--->session:类似于字典的对象,表示当前会话
--->方法:--->is_ajax():如果是通过XMLHTTPRequest发起的,返回True。如果是ajax请求,一般返回json数据。
--->QueryDict对象:request对象中的GET,POST都属于QueryDict对象。
--->方法:get();根据键获取一个值,比如get请求是URL中的参数
--->getlist():根据一个键获取多个值
--->GET属性:通过url提交的请求参数
--->形如:http://127.0.0.1:8000/?a=1&b=2&c=3 可以用get()获取单独的每个值
--->形如:http://127.0.0.1:8000/?a=1&a=2&c=3 可以用getlist('a')获取键为'a'的多个值,返回列表
--->POST属性:通过表单提交的请求参数
HTTPResponse对象:给浏览器返回数据,由开发人员创建
--->不调用模板,直接return HttpResponse('')
--->调用模板:使用render方法:render(request, templateName[, params]),结合数据和模板,返回渲染好的网页
--->属性:--->content:返回的文本内容(html文件内容)
--->charset:返回的编码格式
--->status_code:返回的请求状态,如200,404
--->content-type:返回的MIME类型
--->方法:--->init():使用页面内容实例化HTTPResponse对象
--->write(content):以文件的形式写入
--->flush():以文件的形式输出到缓冲区
--->set_cookie(key, value, marge=None, exprise=None):设置cookie
--->delete_cookie():删除cookie,如果删除不存在的cookie,不会有任何影响
--->子类:--->HTTPResponseRedirect:重定向请求,在url匹配中添加url1和url2,在view1中HTTPResponseRedirect('/view2')重定向到view2,由view2返回网页
--->JsonResponse:返回json数据,用于返回异步请求,如ajax请求,参数data是字典类型,此时Content-Type='application/json'
状态保持:可以用session保存状态,在浏览器cookie保存sessionid,在服务端Django框架在数据库保存sessionid对应的数据,当用户登录后在不同页面切换时,sessionid保持不变,实现状态保持
--->启用session:settings.py中:INSTALLED_APPS=['django.contrib.sessions'],MIDDLEWARE =['django.contrib.sessions.middleware.SessionMiddleware']
--->使用session:--->启用session后,每个HTTPRequest对象都有一个session属性,是一个类似于字典的对象
--->session.get(key, default=None):根据键获取session值
--->session.clear():清空session
--->session.flush():退出登录
--->退出登录:django.contrib.auth.logout(request),退出该请求的登录
--->session.set_expiry(num):num时间后session过期
--->session.set_expiry(datetime):时间点后session过期
--->None,永不过期
DjangoMTV知识点总结之视图
最新推荐文章于 2023-11-09 14:01:18 发布