Django——请求生命周期
视图层之视图函数(views)

一个视图函数,简称视图,他可以接受Web请求,并且必须返回一个Web响应,响应内容可以是一个HTML内容,一张图片,一个404错误,一个文档等等,都可以称为web为你响应的东西。
为了让代码变得可读,大家约定俗成的把该视图放在程序目录中,并给该目录命名为views.py的文件夹中
下图为在Django项目中,views.py 的位置。

HttpRequest对象
path: 请求页面的全路径,不包括域名
mothod: 请求中使用的HTTP方法的字符串表示,全大写表示,
if req.method=="GET":
do_something()
elif req.method=="POST":
do_something_else()
GET: 包含了所有HTTP GET参数的类字典对象
POST: 包含了所有的HTTP POST 参数的类字典对象
COOKIES: 包含所有cookies的标准python字典对象;keys和values都是字符串对象
session: 唯一可读写的属性,代表当前会话的字典对象;自己有激活Django中的session支持时该属性才可用
render函数
render(request,template_name[, context])
结合一个给定的模板和一个给定的上下文字典,并返回一个渲染后的HttpResponse对象
参数: request: 用于生成响应的请求对象 template_name: 要使用模板的完整名称,可选的参数 context: 添加到模板上下文的一个字典,默认是一个空字典,如果字典中的某一个值是可调用的,视图将在渲染模板之前调用它 content_type: 生成的文档要使用的MIME类型。默认为DEFAULT_CONTENT_TYPE 设置的值 status: 响应的状态码。默认为200。
redirect函数
参数可以为:
一个模型:将调用模型的get_absolute_url()函数
一个视图,可以带有参数:将使用urlresolvers.reverse来反向解析名称
一个绝对的或相对的URL,将原封不动的作为重定向的位置
默认返回一个临时的重定向:传递permanent=True 可以返回一个永久的重定向
如下多种方法使用redirect()函数
1.传递一个对象
将调用get_absolute_url()方法来获取重定向的URL:
from django.shortcuts import redirect
def my_view(request):
....
object = MyModel.object.get(...)
return redirect(object)
2.传递一个视图的名称
可以带有位置参数和关键字参数:将使用reverse()方法反向解析URL:
def my_view(request):
....
return redirect("some-view-name",foo="bar")
3.传递要重定向的一个硬编码的URL
def my_view(request):
...
return redirect('/some/url/')
==========================================
也可以为一个完整的url
def my_view(request):
..
return redirect('http://example.com')
==========================================
默认情况下,redirect() 返回一个临时重定向。以上所有的形式都接收一个permanent 参数;如果设置为True,将返回一个永久的重定向:
def my_view(request):
...
object = MyModel.objects.get(...)
return redirect(object,permanent=True)
跳转(重定向)的应用
url.py
url(r"login", views.login),
url(r"yuan_back", views.yuan_back),
views.py
def login(req):
if req.method=="POST":
if 1:
# return redirect("/yuan_back/")
name="yuanhao" return render(req,"my backend.html",locals()) return render(req,"login.html",locals()) def yuan_back(req): name="苑昊" return render(req,"my backend.html",locals())
login.html
<form action="/login/" method="post">
<p>姓名<input type="text" name="username"></p>
<p>性别<input type="text" name="sex"></p>
<p>邮箱<input type="text" name="email"></p>
<p><input type="submit" value="submit"></p>
</form>
-----------------------------------my backend.html
<h1>用户{{ name }}你好</h1>
Django——请求生命周期的更多相关文章
- django请求生命周期,FBV和CBV,ORM拾遗,Git
一.django 请求生命周期 流程图: 1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post, ...
- python 全栈开发,Day84(django请求生命周期,FBV和CBV,ORM拾遗,Git)
一.django 请求生命周期 流程图: 1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post, ...
- Django请求生命周期之响应内容
Django请求生命周期: 1.发送http请求2.服务器接受,根据请求头中的url在路由关系表中进行匹配(从上到下)3.匹配成功后,执行指定的views函数 URL -> 函数 ==>F ...
- Django组件 - Django请求生命周期、中间件
一.Django请求生命周期 在学习中间件之前,先了解一下Django的请求生命周期,如下图: 1)client代表浏览器,浏览器内部为我们封装了socket,Django的WSGI模块也封装了soc ...
- Django 请求生命周期【图示】
Django 请求生命周期
- Django框架深入了解_01(Django请求生命周期、开发模式、cbv源码分析、restful规范、跨域、drf的安装及源码初识)
一.Django请求生命周期: 前端发出请求到后端,通过Django处理.响应返回给前端相关结果的过程 先进入实现了wsgi协议的web服务器--->进入django中间件--->路由f分 ...
- Django请求生命周期和ORM
dajngo请求生命周期 django请求生命周期是:当用户在browser点击URL后,在django后台都发生了什么. 请求响应Http 1.发送Http请求 2.服务器接收,根据请求头中url在 ...
- Django组件---Django请求生命周期和中间件
Django组件---Django请求生命周期和中间件 Django请求生命周期 说明: client代表浏览器,浏览器的内部为我们封装了socket,Django的WSGI模块也为我们封装了sock ...
- Django框架10 /sweetalert插件、django事务和锁、中间件、django请求生命周期
Django框架10 /sweetalert插件.django事务和锁.中间件.django请求生命周期 目录 Django框架10 /sweetalert插件.django事务和锁.中间件.djan ...
- [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]
[Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...
随机推荐
- HBase学习笔记——Java API操作
1.1. 配置 HBaseConfiguration 包:org.apache.hadoop.hbase.HBaseConfiguration 作用:通过此类可以对HBase进行配置 用法实例: C ...
- Tuning SQL 11
这一章还是概述性的说明 优化器 现在都是在用 Cost-based 这种调优器 注意这本书的作者是个大牛, 他就是说 DBA OVER 那个人, Jonathan Lewis hint 是人告诉SQL ...
- [Tips]Javascrip计算文件行数
function calcLineCount(filename, callback) { var fs = require('fs'); var fileStream = fs.createReadS ...
- C++ 类的多态三(多态的原理--虚函数指针--子类虚函数指针初始化)
//多态的原理--虚函数指针--子类虚函数指针初始化 #include<iostream> using namespace std; /* 多态的实现原理(有自己猜想部分) 基础知识: 类 ...
- GAN网络
http://www.sohu.com/a/130252639_473283 高分辨率图像重建 https://zhuanlan.zhihu.com/p/25201511 生成式对抗网络GAN有哪些最 ...
- asp.net知识汇总-页面跳转Server.Transfer和Response.Redirect
1. Server.Transfer 服务器端跳转 webform1.aspx跳转到webform2.aspx页面 webform1.aspx代码如下: protected void Page_Loa ...
- Java集合框架:Collections工具类
java.util.Collections工具类提供非常多实用的方法.使得程序员操作集合类的时候更加的方便easy,这些方法都是静态的. 整个Collections工具类源代码几乎相同有4000行.我 ...
- WinCC7.3 Win764位系统安装教程
WinCC7.3 Win764位安装教程 (1)将ISO文件解压缩. (2)编辑Setup.ini文件 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/fo ...
- sql语句中3表删除和3表查询
好久没来咱们博客园了,主要近期在忙一些七七八八的杂事,包括打羽毛球比赛的准备和自己在学jqgrid的迷茫.先不扯这些没用的了,希望大家能记得小弟,小弟在此谢过大家了. 回归正题:(以下的sql是本人在 ...
- ORACLE 10g RAC [ CSSCLNT][1]clsssInitNative: connect failed, rc 9
"[ CSSCLNT][1]clsssInitNative: connect failed, rc 9“是Oracle RAC中经常遇到的问题,主要出现在安装过程和启动过程中.经常在$ORA ...