python_django_views视图模块
视图(views.py):接收web请求,并响应web请求
在视图响应web请求的过程中,响应文件可能是网页,也可能是json数据
若响应的是网页,我们可分为:
- 地址重定向的网页请求(子类HttpResponseRedirect)
- 错误视图的网页请求(如:404页面/500页面)
视图函数:在views.py下自定义的各类函数
视图参数:视图函数的形式参数,一般我们写的是request,这个参数勒一般就存的是我们浏览器发给我们的内容(一串数据流也可以称作是一个HttpRequest实例)
错误视图:
404视图:找不到网页(url匹配不成功)时返回
我们也可以自定义404页面:
1.在templates下定义404.html(<h2>{{request_path}}</h2> # 导致错误的网址)
2.配置setting.py
a. DEBUG=True代表永远不会调用404.html页面,所以我们这里要设置为False
b. ALLOWED_HOSTS=['*'] # 允许任何人访问
大概样子长这样↓↓↓:

500视图:在视图代码中出现错误(服务器代码错误)
400视图:错误出现在客户端的操作(服务器发现你是爬虫或cookie中带了错误等)
视图中可操作对象:
HttpRequest对象:浏览器发送给服务器的数据流
服务器接收http请求后,会根据报文(数据流)创建HttpRequest对象,调用视图时,创建HttpRequest对象就传入views.py中函数的request形参中。
|
—— HttpRequest对象的属性 | HttpRequest对象— —— HttpRequest对象的方法 | —— QueryDict对象 |
HttpRequest对象的属性:
| path | 请求的完整路径(不包括域名和端口) |
| method | 表示请求的方式(get/post) |
|
encoding |
表示浏览器提交数据的编码方式,一般为utf-8 |
| GET |
类似于字典的对象,包含类get请求的所有参数(获取浏览器地址栏传递过来的数据) |
| POST | 类似于字典的对象,包含了post请求的所有参数(例:表单提交(获取浏览器提交的数据,并在views函数中作出对应的操作)) |
| FILES | 类似于字典的对象,包含了所有上传的文件(例:word文档上传到服务器) |
| COOKIES | 字典,包含类所有的cookie对象 |
| session | 类似于字典的对象,表示当前会话 |
举个栗子:

结果:

GET属性:
举个栗子:
浏览器:
网址:http://localhost:8000/sunck/get1?a=1&b=2&c=3 # GET获取当数值

结果(浏览器显示):123
网址:http://127.0.0.1:8000/sunck/get2?a=1&a=2&b=3 # GET获取多个数值a=1&a=2

结果(浏览器显示):123
POST属性:
举个栗子:
浏览器:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册</title>
</head>
<body>
<form action="regist/" method="post">
姓名:<input type="text" name="name" value=""/>
<hr/>
性别:<input type="radio" name="gender" value="1"/>
男<input type="radio" name="gender" value="0"/>
女<hr/>
年龄:<input type="text" name="age" value=""/>
爱好:
<input type="checkbox" name="hobby" value="power"/>权利
<input type="checkbox" name="hobby" value="money"/>金钱
<hr/>
<input type="submit" value="注册"/>
</form>
</body>
</html>
浏览器html代码
服务器:

from django.shortcuts import render,redirect,HttpResponse
def showregist(request):
return render(request,'myapp/regist.html')
def regist(request):
name = request.POST.get("name")
gender = request.POST.get("gender")
age = request.POST.get("age")
# 这个网页提交过来得到的值,用模型类创建表单对象,对应的就可以存入数据表中勒
hobby = request.POST.getlist("hobby")
print(name)
print(gender)
print(age)
print(hobby)
return HttpResponse("post")
Views模块函数
对应url配置(这里可以直接用地址重定向,就不用写这么复杂勒):

HttpRequest的方法:
is_ajax():若通过XMLHttpRequest发起的,返回True(ajax请求,一般返回json数据)
QueryDict对象:request对象中的GET/POST都属于QueryDict对象
方法:
get():根据键获取值(且只能获取一个值)www.sunck.wang/abc?a=1&b=2&c=3
getlist():将键的值以列表的形式返回(获取多个值)
HttpRequest对象是由django创建,HttpResponse对象是由程序员创建(因为要合成返回给浏览器的数据)
HttpRequest对象: 给浏览器返回数据
返回数据的方法:
1. 不调用模板,直接返回数据(例:return HttpResponse('dasfds'))
2.调用模板:使用render(request, templateName[,context])
作用: 结合数据和模板,返回完整的html页面
参数:request:请求体对象
templateName:模板路径
context:传递给需要渲染在模板上的数据
举个栗子:
return render(request,'myapp/main.html',{'username':username})
|
—— HttpResponse对象的属性 | HttpResponse对象— —— HttpResponse对象的方法 | —— 子类HttpResponseRedict | —— —— 子类JsonResponse |
HttpResponse对象的属性:
|
HttpResponse().content |
返回给浏览器内容的类型 |
|
HttpResponse().charset |
编码方式 |
|
HttpResponse().status_code |
响应状态码 (200/304/404) |
|
HttpResponse().content-type |
指定输出的MIME类型(例:若我是html文件,则按网页渲染,若我是json文件,则为json文件接收) |
HttpResponse对象的方法:
|
init |
使用页面内容实例化HttpResponse对象 |
|
write(content) |
以文件的形式写入 |
|
flush() |
以文件的形式输出缓冲区(刷新缓冲区) |
|
set_cookie(key,value='', max_age=None,exprise=None) |
在浏览器存入cookie |
|
delete_cookie(key) |
删除cookie(若删除不存在的key,不会报错) |
set_cookie方法:
# cookie
def cookietest(request):
res = HttpResponse()
# cookie1 = request.COOKIES # 存入后,取出cookie值
# res.write('<h1>' + cookie['sunck'] + '</h1>') # 在浏览器上显示取出的cookie值
cookie = res.set_cookie('sunck','good') # 存入cookie值,这里面俺们就可以存一个token
return res
# 在浏览器》检查》Network》刷新页面》选中name》Cookie》查看写的cookie值
子类HttpResponseRedirect:继承类HttpResponse类
作用:地址重定向(服务器端的跳转)
(例:我们输入网址1,但显示的页面是网址2滴页面)
简写方法:redirect()
举个栗子:
from django.http import HttpResponseRedirect
from django.shortcuts import redirect # 重定向
def redirect1(request):
# return HttpResponseRedirect('/sunck/redirect2')
return redirect('/sunck/redirect2') # 简写方法(推荐使用) def redirect2(request):
return HttpResponse('我是重定向页面')
对应的url:

过程:
当我们在浏览器输入:http://localhost:8000/sunck/redirect1时,浏览器显示的网址:http://localhost:8000/sunck/redirect2/,这就是重定向,虽然在浏览器没有操作,但是它是在服务器中完成了自我跳转。
子类JsonResponse:返回json数据,一般用于异步请求(ajax)
(例:若HttpRequest().is_ajax() 为true,则我们一般返回的就是json数据)
大概过程:
from django.http import JsonResponse
def js(request):
if request.is_ajax():
return JsonResponse({}) # 返回json数据,{}代表json数据
注:JsonResponse中属性Content-type的类型为application/json(默认返回为json类型)
python_django_views视图模块的更多相关文章
- ASP.NET MVC 视图(一)
ASP.NET MVC 视图(一) 前言 从本篇开始就进入到了MVC中的视图部分,在前面的一些篇幅中或多或少的对视图和视图中的一些对象的运用进行了描述,不过毕竟不是视图篇幅说的不全面,本篇首先为大家讲 ...
- 从C#到Objective-C,循序渐进学习苹果开发(6)--视图控制器的使用
本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本篇主要开始介绍基于XCod ...
- CSS3_概述、发展史、模块介绍、与浏览器之间的关系
一.CSS3概述和CSS3的发展史: 1.css3概述: CSS3是CSS2的升级版本,3只是版本号,它在CSS2.1的基础上增加了很多强大的新功能. 目前主流浏览器chrome.safari. ...
- Qt入门(20)——Qt模块简介
当你安装Qt时,这些模块会被构建到库中.在Qt企业版.Qt评估版和Qt自由版中,包含所有的模块.对于Qt专业版,提供基本的模块--工具.核心.窗口部件.对话框.图标视图和工作区模块.画布模块画布模块提 ...
- bug管理工具之禅道的测试模块的使用
https://www.cnblogs.com/evablogs/p/6785017.html 角色:产品经理PO,项目经理PM,开发,测试 测试任务: bug: 1.维护bug视图模块:[测试]-[ ...
- Django 建立用户的视图(搜索 )
在web应用上,有两个关于搜索获得巨大成功的故事:Google和Yahoo,通过搜索,他们建立了几十亿美元的业务.几乎每个网站都有很大的比例访问量来自这两个搜索引擎.甚至,一个网站是否成功取决于其站内 ...
- [转] CSSOM视图模式(CSSOM View Module)相关整理
以下就是一些API属性的相关内容,包括兼容性,使用,测试等. 一.Window视图属性 这些属性可以hold住整个浏览器窗体大小.微软则将这些API称为“Screenview 接口”.包括:inner ...
- Django来敲门~第一部分【4. 创建第一个模块应用】
成若缺,其用不弊.大盈若冲,其用不穷.大直若屈.大巧若拙.大辩若讷.静胜躁,寒胜热.清静为天下正 ——老子<道德经> 本章内容 创建应用(app) 开发第一个视图(View) URL访问配 ...
- 03 Django视图
功能 接受Web请求HttpRequest,进行逻辑处理,与 M 和 T 进行交互,返回 Web 响应 HttpResponse 给请求者 示例项目的创建 创建项目 test3 django-admi ...
随机推荐
- mySQL单表限制大小
MySQL单表大小的限制在目前的技术环境中,由所在主机的OS上面的文件系统来界定而不是由MySQL数据库本身来决定了. 在老版本的MySQL 3.22中,MySQL单表大小为4GB,当时的MySQL的 ...
- scss定义全局变量引入sass-resources-loader报错
开发jquery多页应用,引入sass-resources-loader后报 Make sure 'options.resources' is String or Array of Strings. ...
- Codeforces Round #552:G. Minimum Possible LCM
官方题解是时间复杂度为O(nd)的.这里给出一个简单实现但是时间复杂度为O(NlogN) (N=1e7) 因为 a*b/gcd(a,b)=lcm(a,b) 所以我们可以枚举每一个因子,然后找到存在这个 ...
- HIVE了解及SQL基础命令
hive(数据仓库工具) Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据.它架构在Hadoop之上,总归为大数据,并使得查询和分析方便.并提供简单的sql查询功能,可以将sql语句转 ...
- SNAT 和 DNAT
SNAT是原地址转换,DNAT是目标地址转换. SNAT 内部地址要访问公网上的服务时,内部地址会主动发起连接,将内部地址转换成公有ip.网关这个地址转换称为SNAT 企业内部的主机A想访问互联网上的 ...
- js获取url参数值的几种方式
一.原生js获取URL参数值: 比如当前URL为:http://localhost:8080/#/page2?id=100&name=guanxy <template> <d ...
- linux上文件内容去重的问题uniq/awk 正则表达过滤操作
.uniq:只会对相邻的行进行判断是否重复,不能全文本进行搜索是否重复,所以往往跟sort结合使用. 例子1: [root@aaa01 ~]# cat a.txt 12 34 56 12 [root@ ...
- APICloud框架——融云+UIChatTools实现即时通讯聊天
今天完成了公司app的聊天界面的收发消息功能,结合融云2和UIChatTools模块实现,只是实现了基本功能,好多细节还没有实现,废话不多说,上代码 输入框页面(win) 先引入所需模块 // 融云模 ...
- 工程师技术(一):启用SELinux保护、自定义用户环境、配置IPv6地址、配置聚合连接、配置firewalld防火墙
一.启用SELinux保护 目标: 本例要求为虚拟机 server0.desktop0 配置SELinux: 确保 SELinux 处于强制启用模式 在每次重新开机后,此设置必须仍然有效 方案: SE ...
- Linux初上手!
虚拟机Virtual Box装的Kali Linux,是Debian的发行版本,安装过程不说了,不是硬盘安装也没什么说的,由于是新手所以只有两个分区,一个[/]和一个[swap] 装好之后是xwind ...