在Django MTV模式中,View视图负责业务逻辑部分,路由系统接收到HTTP请求,并将任务分配给相应的视图函数,由视图函数来负责响应这个请求。无论视图本身包含什么逻辑,都要返回响应。

在这里HTTP请求中产生两个核心对象:

  • HTTP请求:HttpRequest对象
  • HTTP响应:HttpResponse对象

所在位置:django.http

在Django项目中,一个app内的视图函数都放在views.py中

def register(request): # 一个视图函数print(request)

HttpRequest对象的属性和方法

request.path   获取路径
request.get_full_path()   带数据的路径
request.method   请求方式("POST"/"GET")
request.GET        包含所有HTTP GET参数的类字典对象
request.POST      包含所有HTTP POST参数的类字典对象name = request.POST.get("user")  获取提交的数据(form表单中name属性为user的 用户输入文本值)pwd = request.POST.get("pwd")(form表单中name属性为pwd的 用户输入的文本值)服务器收到空的POST请求的情况也是可能发生的,也就是说,表单form通过HTTP POST方法提交请求,但是表单中可能没有数据,因此不能使用
if request.POST来判断是否使用了HTTP POST 方法;应该使用  if request.method=="POST"request.COOKIES     包含所有cookies的标准Python字典对象;keys和values都是字符串。
FILES:      包含所有上传文件的类字典对象;FILES中的每一个Key都是<input type="file" name="" />标签中name属性的值,FILES中的每一个value同时也是一个标准的python字典对象,包含下面三个Keys:filename:      上传文件名,用字符串表示content_type:   上传文件的Content Typecontent:       上传文件的原始内容request.user       是一个django.contrib.auth.models.User对象,代表当前登陆的用户。如果访问用户当前没有登陆,user将被初始化为django.contrib.auth.models.AnonymousUser的实例。
你可以通过user的is_authenticated()方法来辨别用户是否登陆:if req.user.is_authenticated();只有激活Django中的AuthenticationMiddleware时该属性才可用request.session    唯一可读写的属性,代表当前会话的字典对象;自己有激活Django中的session支持时该属性才可用。request.META       包含了所有本次HTTP请求的Header信息,是一个python字典。这个字典中常见的键值有:HTTP_REFERER    进站前链接网页,可以用来统计网站流量来源。 (请注意,它是REFERRER的笔误)HTTP_USER_AGENT     用户浏览器标识,可以获知浏览器的型号版本等信息。REMOTE_ADDR     客户端IP(如果申请是经过代理服务器的话,那么它可能是以逗号分割的多个IP地址)

HttpResponse对象的属性和方法

页面渲染: 推荐用render(request,"模板.html",{})  第三个参数可以是键值对,也可以是locals()函数
页面跳转:   redirect("路径")
locals()   可以直接将函数中所有的变量传给模板render和redirect的区别:redirect跳转将会使url发生改变,而render不会改变。要在合适的时候使用redirect

示例:

url.py中:url(r"login",   views.login),url(r"yse",   views.yes),views.py中:    def login(request):if request.method == "POST":if request.POST.get("user") == "alex" and request.POST.get("pwd") == "666":return redirect("/yes/")return render(request,"login.html",locals())def yes(request):name = "alex"return render(request,"yes.html",locals())login.html中:
<form action="/register/" method="post"><div class="input"><input type="text" class="inputs" placeholder="用户名" name="user"></div><div class="input"><input type="password" class="inputs" placeholder="密码" name="pwd"></div><input type="button" class="button" value="注册">
</form>
yes.html中:
<h1>{{ name }}你好!</h1>总结: render和redirect的区别:
1. render的页面需要模板语言渲染,即需要将数据库的数据加载到html,那么所有的这些数据除了写在yes的视图函数中,必须还要写在login中,代码重复,没有解耦.
2. 最重要的: url没有跳转到/yes/,而是还在/login/,所以当刷新后又得重新登录。

  

转载于:https://www.cnblogs.com/V587Chinese/p/9770100.html

Django view(视图)相关推荐

  1. Django View(视图系统)

    Django View 官方文档 一个视图函数(类),简称视图,是一个简单的 Python 函数(类),它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误 ...

  2. django之视图系统 views.py--主要内容(FBV和CBV、dispath、request对象和request.FILES、JsonResponse)...

    django之视图系统 views.py-->主要内容(FBV和CBV.dispath.request对象和request.FILES.JsonResponse) 一个视图函数(类),简称视图, ...

  3. django view

    django view URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 随便新建一个Django项目,默认会自动为我们创建一个/project ...

  4. python后台架构Django教程——视图views渲染

    全栈工程师开发手册 (作者:栾鹏) 本文衔接至python后台架构Django开发全解. 有其他问题请先阅读: http://blog.csdn.net/luanpeng825485697/artic ...

  5. django通用视图(CBV)

    1. 介绍 Django提供了很多通用的基于类的视图(Class Based View),来帮我们简化视图的编写.这些View与上述操作的对应关系如下: 展示对象列表(比如所有用户,所有文章)- Li ...

  6. django 类视图装饰器_灵活视图处理的模式,第2部分–使用装饰器

    django 类视图装饰器 For years, we've been so busy discussing the virtues and drawbacks of the model/contro ...

  7. django通用视图(视图类)的login登陆、权限限定

    django的登陆限定和权限限定是view设计中很重要的一个组成.网上的教程大部分都是通过使用view函数的装饰器来实现,比如: @login_required(login_url='/') @per ...

  8. 【Android 逆向】IDA 工具使用 ( 同步指定的 IDA View 视图 | Hex View 数据格式 | 过滤设置 )

    文章目录 一.同步指定的 IDA View 视图 二.Hex View 数据格式 三.过滤设置 一.同步指定的 IDA View 视图 IDA 中可以 同时打开多个 IDA View ( 下图红色矩形 ...

  9. 查看mysql view作用_Mysql中View视图的作用

    浙江PHP博客分享关于Mysql中使用View视图的作用.很多小伙伴知道视图的作用,却不知道为什么要使用视图以及视图的一些好处是什么,下面浙江一点PHP将详细阐述关于视图的用法以及作用. 作用一: 提 ...

最新文章

  1. linux vim6,VIM6:linux终端下的英文字典--SDCV
  2. R语言临床预测模型的评价指标与验证指标实战:自定义的综合判别改善指标(Integrated Discrimination Improvement, IDI)函数
  3. ES mlockall作用——preventing that memory from being paged to the swap area
  4. 【直播课】TensorRT工程落地实践:快速掌握模型优化部署
  5. 在“软件工程:研究与实践”研讨会上关于UML Use-Case的开放空间讨论
  6. git-ssh-keygen
  7. [html] 为什么移动端页面的设计稿一般是750px/640px呢?
  8. HTML跳转为啥会404,为什么网页会出现404 not found?
  9. 95-34-035-Context-HeadContext和TailContext
  10. opencv android 羽化,学习OpenCV:滤镜系列(15)——羽化(模糊边缘)
  11. 【Computer Organization笔记14】指令流水中的控制冲突和异常
  12. 教你轻松创建谷歌账号、谷歌邮箱!
  13. 实现三级导航demo
  14. python找不到模块pyodbc_Python:找不到pyodbc导入模块
  15. GPS误差分析及DGPS
  16. 绘制自己的人际关系图_错综复杂的人际关系,一张图谱一目了然
  17. Parallel()
  18. HTTP权威指南------URL与资源
  19. 【Pandas】根据某列分组求和
  20. 视频剪裁尺寸和裁剪时间

热门文章

  1. java 自定义注解实现不同对象之间的拷贝(支持大小写、驼峰转换)
  2. 「Activiti精品 悟纤出品」流程模型搭建-小试牛刀 - 第324篇
  3. 说说QQ校友与校内网的优势
  4. Windows7 家庭普通版升级旗舰版
  5. 解决layui轮播图满屏是高度自适应的问题
  6. IBMT60安装XP时找不硬盘?
  7. XNA游戏——泡泡堂
  8. php+b2b2c+商城,PHP源码:SHOPNC b2b2c电商平台系统,im+结算补丁+商城专题页插件
  9. Linux Deepin安装Typora教程
  10. 【经典】Mybatis百万级高效批量插入