Django Views(视图函数)
http请求中产生两个核心对象:
http请求:HttpRequest对象
http响应:HttpResponse对象
所在位置:django.http
之前我们用到的参数request就是HttpRequest 检测方法:isinstance(request,HttpRequest)
1 HttpRequest对象的属性和方法:
- # path: 请求页面的全路径,不包括域名
- #
- # method: 请求中使用的HTTP方法的字符串表示。全大写表示。例如
- #
- # if req.method=="GET":
- #
- # do_something()
- #
- # elseif req.method=="POST":
- #
- # do_something_else()
- #
- # GET: 包含所有HTTP GET参数的类字典对象
- #
- # POST: 包含所有HTTP POST参数的类字典对象
- #
- # 服务器收到空的POST请求的情况也是可能发生的,也就是说,表单form通过
- # HTTP POST方法提交请求,但是表单中可能没有数据,因此不能使用
- # if req.POST来判断是否使用了HTTP POST 方法;应该使用 if req.method=="POST"
- #
- #
- #
- # COOKIES: 包含所有cookies的标准Python字典对象;keys和values都是字符串。
- #
- # FILES: 包含所有上传文件的类字典对象;FILES中的每一个Key都是<input type="file" name="" />标签中 name属性的值,FILES中的每一个value同时也是一个标准的python字典对象,包含下面三个Keys:
- #
- # filename: 上传文件名,用字符串表示
- # content_type: 上传文件的Content Type
- # content: 上传文件的原始内容
- #
- #
- # user: 是一个django.contrib.auth.models.User对象,代表当前登陆的用户。如果访问用户当前
- # 没有登陆,user将被初始化为django.contrib.auth.models.AnonymousUser的实例。你
- # 可以通过user的is_authenticated()方法来辨别用户是否登陆:
- # if req.user.is_authenticated();只有激活Django中的AuthenticationMiddleware
- # 时该属性才可用
- #
- # session: 唯一可读写的属性,代表当前会话的字典对象;自己有激活Django中的session支持时该属性才可用。
- #方法
- get_full_path(), 比如:http://127.0.0.1:8000/index33/?name=123 ,req.get_full_path()得到的结果就是/index33/?name=123
- req.path:/index33
注意一个常用方法:request.POST.getlist('')
2 HttpResponse对象:
对于HttpRequest对象来说,是由django自动创建的,但是,HttpResponse对象就必须我们自己创建。每个view请求处理方法必须返回一个HttpResponse对象。
HttpResponse类在django.http.HttpResponse
在HttpResponse对象上扩展的常用方法:
页面渲染: render()(推荐)<br> render_to_response(),
页面跳转: redirect(
"路径"
)
locals(): 可以直接将函数中所有的变量传给模板
- -----------------------------------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>
- #总结: render和redirect的区别:
- # 1 if render的页面需要模板语言渲染,需要的将数据库的数据加载到html,那么所有的这一部分
- # 除了写在yuan_back的视图函数中,必须还要写在login中,代码重复,没有解耦.
- # 2 the most important: url没有跳转到/yuan_back/,而是还在/login/,所以当刷新后
- # 又得重新登录.
Django Views(视图函数)的更多相关文章
- django views视图函数返回值 return redirect httpresponse总结
django views视图函数返回值 return redirect render httpresponse总结
- django views视图函数
Django views.py视图文件 一. 创建views.py文件,在工程文件夹根目录创建views.py视图文件,其实任意文件名都可以,使用views是为了遵循传统. 注:所有的views函数都 ...
- Django之views视图函数
views视图函数属于MTV中逻辑处理的部分视图函数包含着两个对象,HttpRequest对象和HttpResponse对象 一.HttpRequest对象 HttpRequest对象在Django中 ...
- python web框架篇:views视图函数
Django请求的生命周期是怎样的? 简单地说,通过URL对应关系匹配 ->找到对应的函数(或者类)->返回字符串(或者读取Html之后返回渲染的字符串) 解剖起来如下: 1. 当用户在浏 ...
- Django之视图函数总结
Django之视图函数总结 HttpRequest与HttpResponse http请求中产生两个核心对象: HttpRequest对象:用户请求相关的所有信息(对象) HttpResponse对象 ...
- Django 定义视图函数
Django 定义视图函数 一.接收内容及文件处理 1.接收分类 # 获取数据 request.GET # 提交数据 request.POST # 获取文件 request.FILES 2.check ...
- 03 Django之视图函数
一.Django的视图函数view 一个视图函数(类),简称视图,是一个简单的Python函数(类),它接受WEB请求并返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误, ...
- 简单的django登录项目---带views视图函数(脚本文件)---用Bootstrap
简单的django登录项目 1.首先建立工程,建立工程请参照:https://www.cnblogs.com/effortsing/p/10394511.html 2.在Firstdjango工程项目 ...
- django的视图函数
一.视图函数view 视图函数是接收一个请求(request对象),并返回响应的函数 1. HttpResponse响应请求 这个方法是返回字符串一类的,可以识别标签 2. render响应请求 re ...
- Django restframe 视图函数以及ModelSerializer的使用
建立model数据库 from django.db import models __all__ = ['Book', 'Publisher', 'Author'] # Create your mode ...
随机推荐
- 使用javaMail实现简单邮件发送
一.首先你要用来发送邮件的qq邮箱需要开通pop3/smtp服务,这个可以百度一下就知道了 二.导入所需要的jar包,我使用的是maven添加依赖 <dependency> <gro ...
- 初始Spring MVC——练手小项目
初始Spring MVC 前几天开始了我的spring学习之旅,由于之前使用过MVC模式来做项目,所以我先下手的是 Spring MVC,做个练手项目,非常简单 项目介绍: 用户输入信息 -> ...
- Treap讲解
Treap讲解 上一篇blog提出了Treap这个算法,在这里我就要详细讲解. 首先,我们可以从字面上理解这个算法,Treap这个单词是由Tree和Heap两个单词构成的,所以它的性质就很好理解了,明 ...
- ActiveMQ(七)_伪集群和主从高可用使用(转)
本文转自: https://www.cnblogs.com/gossip/p/5977489.html 一.本文目的 介绍如何在同一台虚拟机上搭建高可用的Activemq服务,集群数量 ...
- 使用数据库乐观锁解决高并发秒杀问题,以及如何模拟高并发的场景,CyclicBarrier和CountDownLatch类的用法
数据库:mysql 数据库的乐观锁:一般通过数据表加version来实现,相对于悲观锁的话,更能省数据库性能,废话不多说,直接看代码 第一步: 建立数据库表: CREATE TABLE `skill_ ...
- spring data学习
在Spring Data模块中定义依赖: <dependencies> <dependency> <groupId>org.springframework.data ...
- [Luogu 3674]小清新人渣的本愿
Description 题库链接 给你一个序列 \(A\) ,长度为 \(n\) ,有 \(m\) 次操作,每次询问一个区间是否可以 选出两个数它们的差为 \(x\) : 选出两个数它们的和为 \(x ...
- 计蒜客NOIP2017提高组模拟赛(三)day1
火山喷发 火山喷发对所有附近的生物具有毁灭性的影响.在本题中,我们希望用数值来模拟这一过程. 在环境里有 n 个生物分别具有 A1,A2,⋯,An点生命值,一次火山喷发总计 MM 轮 ...
- Codeforces 666E Forensic Examination
题意:给定主串s和m个模式串,每次询问[l,r]的模式串中出现s[pl...pr]次数最多的串和次数. 这题挺简单的,先把所有模式串拿来建广义后缀自动机,询问相当于子树众数,用线段树合并即可. 那我为 ...
- BZOJ4926 皮皮妖的递推
第二次乱出题.为了方便,以m=2为例,把原式变一下形,得f(i)+f(f(i-1))=i我们先无视掉那个-1,我们发现:诶,这个东西好像斐波那契数列.具体地,我们用f(n)表示把n用斐波那契数列进行拆 ...