视图层之视图函数(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——请求生命周期的更多相关文章

  1. django请求生命周期,FBV和CBV,ORM拾遗,Git

    一.django 请求生命周期 流程图: 1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post, ...

  2. python 全栈开发,Day84(django请求生命周期,FBV和CBV,ORM拾遗,Git)

    一.django 请求生命周期 流程图: 1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post, ...

  3. Django请求生命周期之响应内容

    Django请求生命周期: 1.发送http请求2.服务器接受,根据请求头中的url在路由关系表中进行匹配(从上到下)3.匹配成功后,执行指定的views函数 URL -> 函数 ==>F ...

  4. Django组件 - Django请求生命周期、中间件

    一.Django请求生命周期 在学习中间件之前,先了解一下Django的请求生命周期,如下图: 1)client代表浏览器,浏览器内部为我们封装了socket,Django的WSGI模块也封装了soc ...

  5. Django 请求生命周期【图示】

    Django 请求生命周期

  6. Django框架深入了解_01(Django请求生命周期、开发模式、cbv源码分析、restful规范、跨域、drf的安装及源码初识)

    一.Django请求生命周期: 前端发出请求到后端,通过Django处理.响应返回给前端相关结果的过程 先进入实现了wsgi协议的web服务器--->进入django中间件--->路由f分 ...

  7. Django请求生命周期和ORM

    dajngo请求生命周期 django请求生命周期是:当用户在browser点击URL后,在django后台都发生了什么. 请求响应Http 1.发送Http请求 2.服务器接收,根据请求头中url在 ...

  8. Django组件---Django请求生命周期和中间件

    Django组件---Django请求生命周期和中间件 Django请求生命周期 说明: client代表浏览器,浏览器的内部为我们封装了socket,Django的WSGI模块也为我们封装了sock ...

  9. Django框架10 /sweetalert插件、django事务和锁、中间件、django请求生命周期

    Django框架10 /sweetalert插件.django事务和锁.中间件.django请求生命周期 目录 Django框架10 /sweetalert插件.django事务和锁.中间件.djan ...

  10. [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]

    [Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...

随机推荐

  1. ecmall的物流配送体系改造

    接触多了ecshop.ecmall原始逻辑的,一般都习惯以整单的方式统一计算运费,这是一种很简单的思路. 但淘宝多了,就发现,物流运费没有那么简单. 首先,每种商品单独设置运费的体系,或者叫运费模板: ...

  2. Java动态代理原理及其简单应用

    概念 代理对象和被代理对象一般实现相同的接口,调用者与代理对象进行交互.代理的存在对于调用者来说是透明的,调用者看到的只是接口.代理对象则可以封装一些内部的处理逻辑,如访问控制.远程通信.日志.缓存等 ...

  3. [转]Spark能否取代Hadoop?

    大数据的浪潮风靡全球的时候,Spark火了.在国外 Yahoo!.Twitter.Intel.Amazon.Cloudera 等公司率先应用并推广 Spark 技术,在国内阿里巴巴.百度.淘宝.腾讯. ...

  4. 在linux下安装配置rabbitMQ详细教程

    在linux下安装配置rabbitMQ详细教程 2017年12月20日 17:34:47 阅读数:7539 安装Erlang 由于RabbitMQ依赖Erlang, 所以需要先安装Erlang. Er ...

  5. 鼠标滑入滑出,输入框获得失去焦点后触发事件的N种方法之一二

    熟悉position的用法 <!doctype html><html lang="en"> <head> <meta charset=&q ...

  6. Hibernate中持久化类与持久化对象

    1.JavaBean类 JavaBean类是实体类,必须一下属性,private修饰的成员属性,public修饰的getter与setter访问方法,public修饰的空参构造器,实现Serializ ...

  7. Java Base64解析

    最近在业务场景中,需要对第三方传递进来的字符进行base64解密,根据第三方文档提供的解析工具,对数据进行了解析,关于Base64的解析方式如下: String sign = "xxxxxx ...

  8. CentOS 安装 dotnetcore

    参考官方教程:https://www.microsoft.com/net/core#linuxcentos 安装.NET CORE SDK sudo yum install libunwind lib ...

  9. 【BZOJ3144】[Hnoi2013]切糕 最小割

    [BZOJ3144][Hnoi2013]切糕 Description Input 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R个P行Q ...

  10. Handlebars.js,Json+ajax+拼html

    英文版:http://handlebarsjs.com./ 原文链接:http://www.cnblogs.com/diligenceday/p/4105229.html, http://segmen ...