4)django-视图view
视图是django功能函数,结合url使用
1.视图方式
视图方式经常用的有两种
用户GET获取数据
用户POST提交数据
用户第一次访问页面是GET
用户第交表单是POST
视图:可以通过request.method判断是请求方式
django常用的方法:
reqeust.method
request.body封装了很多请求内容信息,比如GET,POST等
request.GET
request.POST GET和POST都是从body拿的内容,body还其他方法如delete,put等提交方式
request.path_info
request.FILES
request.Cookie
request.META封装了很多请求头信息
2.获取用户请求数据
1)如果用户以GET方式访问
视图request.GET.get("xx")获取数据,此数据包含在请求头,即URL中。
http://127.0.0.1:8000/login?id=3
views.py
request.GET.get("id") id和URL中的id对应
def detail(request):
id=request.GET.get("id")
return render(request,"detail.html",{"detail_info":USER_DICT.get(id)})
2)如果以POST方式响应
A)获取单行或者单选数据,比如input,radio,select(单选)
request.POST.get("XX")获取数据
B)获取多选数据,比如checkbox,select(多选)
request.POST.getlist("xxx")
C)上传文件
request.FILES#当上传文件的时候所有 文件内容都到了FILES,包括文件名。
当form没有设置enctype="multipart/form-data
f=request.POST.get("fafafa") #s可以拿到文件名
而request.FILES.get("fafafa")#这里会返回是一个None
当form设置enctype="multipart/form-data
enctype="multpart/form-data"模式下:input内容会放到POST里面,file会放到FILE里面
# 需要在 form中设置enctype="multpart/form-data",如果没有enctype上传的时候只是字符串,如果加了上传内容,所f=request.POST.get("fafafa")会显示None
#enctype="multpart/form-data"模式下:input内容会放到POST里面,file会放到FILE里面
file其他方法
文件对象 = reqeust.FILES.get()
文件对象.name
文件对象.size
文件对象.chunks()表示一点一点上传
obj = request.FILES.get('fafafa')
obj.name
f = open(obj.name, mode='wb')
for item in obj.chunks():
f.write(item)
f.close()
3.视图渲染方式
导入模块
from django.shortcuts import render,HttpResponse,redirect
return HttpRespone("字符串") #直接返回字符串
return render(request,"模板的文件的路径") #渲染到页面,第二个参数是html模块路径
return redirect("只能URL路径") #跳转,不能直接写"html模块路径",因为拿不到别人的模板路径,
所以这里应该写URL路径比如:“http://www.baidu.com”,或者本地URL"/home"
4.什么时候渲染
在渲染之前替换,所以html拿到都是渲染好的
def func(request):
return render(request,"index.html",{"current_user":"alex"}) <div>{{current_user}}</div>
最后生成字符串
<div>alex</div>
什么时候变替换:在渲染之前替换,所以html拿到都是渲染好的
5.示例
模板HTML代码login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/login/" method="post" enctype="multipart/form-data">
<p>
<input type="text" name="username" placeholder="用户名"/>
</p>
<p>
<input type="password" name="password" placeholder="密码"/>
</p>
<p>
男:<input type="radio" name="gender" value="1"/>
女:<input type="radio" name="gender" value="2"/>
</p>
<p>
男:<input type="checkbox" name="favor" value="11"/>
女:<input type="checkbox" name="favor" value="22"/>
</p>
<p>
<select name="city1">
<option value="111">上海</option>
<option value="111">北京</option>
<option value="111">深圳</option>
</select>
</p> <p>
<select name="city2" multiple="multiple">
<option value="111">上海</option>
<option value="111">北京</option>
<option value="111">深圳</option>
</select>
</p>
<p>
<input type="file" name="fafafa">
</p>
<input type="submit" value="提交">
</form>
</body>
</html>
views.py
def login(request):
if request.method=="GET":
return render(request,"login.html")
elif request.method=="POST":
u=request.POST.get("username")
p=request.POST.get("password") #radis
r=request.POST.get("gender")
print(r)
#获取checkbox
c1=request.POST.get("favor")
c2=request.POST.getlist("favor")
print(c1,c2) # f=request.POST.get("fafafa") #默认只能拿到文件名
# fc=request.FILES#当上传文件的时候所有内容都到了FILES,包括文件名
# f1=request.FILES.get("fafafa")#这里会返回是一个None,
# 需要在 form中设置enctype="multpart/form-data",如果没有enctype上传的时候只是字符串,如果加了上传内容,所f=request.POST.get("fafafa")会显示None
#enctype="multpart/form-data"模式下:input内容会放到POST里面,file会放到FILE里面
# print(f,fc,f1)
# print(f) f1=request.FILES.get("fafafa") #打印出来像字符串,其实是django.core.files.uploadedfile.InMemoryUploadedFile,f1.name属性== InMemoryUploadedFile,有__repr__()
print(f1,type(f1),f1.name)
f1.chunks()#表示一点点取文件 f=open(f1.name,mode='wb')
for i in f1.chunks():
f.write(i) f.close() if u=="root" and p=="123":
return redirect("/index/")
else:
return render(request,"login.html")
4)django-视图view的更多相关文章
- Django视图View
1.什么是Django的视图函数 一个视图函数(或者一个类),简称视图 是python的一个简单的函数,他是接受web请求 并且 处理逻辑 进而返回 响应 响应可以是一张网页的HTML内容,一个重定向 ...
- Django学习笔记之Django视图View
一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. ...
- django 视图view
视图里一般是函数和类,需要返回响应. 试图分为2种:2. CBV(class base view) FBV(function base view) from django.views import V ...
- 9.11 Django视图 view和路由
2018-9-11 16:34:16 2018-9-11 19:00:24 越努力,.越幸运! Django框架参考: https://www.cnblogs.com/liwenzhou/p/8296 ...
- [diango]理解django视图工作原理
前言:正确理解django视图view,模型model,模板的概念及其之间的关联关系,才能快速学习并上手使用django制作网页 本文主要讲解自己在学习django后对视图view的理解 在进入正文之 ...
- Django的View(视图)和路由系统
一.Django的View(视图) 1.介绍 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一 ...
- Django的View(视图)
Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误, ...
- python3开发进阶-Django视图(View)的常见用法
阅读目录 简述Django的View(视图) CBV和FBV Request对象和Response对象 Django组件(render,redirect)详解 一.简述Django的View(视图) ...
- Django 框架篇(四) : 视图(view)详解 以及 路由系统(url)
|--Django的View(视图) |-- CBV和FBV: |-- 给视图增加装饰器: |-- request对象: |-- response对象: |-- Django的路由系统(url): | ...
- Django 2.0 学习(03):Django视图和URL(下)
接上篇博文,继续分析Django基本流程. 编写第一个(view)视图函数 1.打开文件polls/views.py,输入下面的Python代码: from django.http import Ht ...
随机推荐
- jqweui Picker使用一个小问题
地址:http://jqweui.com/extends#picker加了Display Value后,会产生改变值后,Picker显示Value而不显示Text情况.需要在OnClose里做如下处理 ...
- 【小玩意】time-passing-by clock
就着youtube上的教程用html和js做了个小时钟. Code: clock.html //clock.html <!DOCTYPE html> <html> <he ...
- 【游记】关于NOIP2017
-2017.11.13- Day0.到达酒店无所事事.跟着两个大佬拉着窗帘玩恐怖游戏留下了心理阴影,然后跑去找葱葱一起复习.晚上很晚才睡.Day1.T1结论题,以前写过.T2模拟,细节有点多.T3Di ...
- CF961G Partitions
传送门 luogu 显然每个数的贡献可以一起算感性理解一下,于是答案就是权值总和乘以每个数被算了几次 那个"集合大小为\(|S|\)的集合权值为权值和乘\(|S|\)",可以看成一 ...
- EcustOJ P109跳一跳(离散化+dp)
题目链接 感觉这道题我看了很多天,胡思乱想啊,一开始觉得记忆化搜索会可能T啊,,可能出题人的数据卡的好就稳T了的感觉..后来想了想,好像离散化一下,记一下位置之后再记忆化搜索就应该稳了吧..(好像直接 ...
- 洛谷 P1032 【字串变换】
感觉这个题用一些常用的stl和string函数会非常简单..(难道就是考这两个的吗? vector<pair<string,string>>pos//用于变化 map<s ...
- steps/train_lda_mllt.sh
LDA+MLLT指的是在计算MFCC后对特征进行的变换:首先对特征进行扩帧,使用LDA降维(默认降低到40),然后经过多次迭代轮数估计一个对角变换(又称为MLLT或CTC) .详见 http://ka ...
- 【Thymeleaf】浅谈Java模板引擎(带更新...)
什么是模板引擎 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. 为什么要用模板 ...
- burp导入证书后仍然抓不到https包
burp导入证书后仍然抓不到https包 如果你是导入证书有问题,请参考此博客 http://blog.csdn.net/zyw_anquan/article/details/47904495 有一点 ...
- Protobuf学习
https://www.jianshu.com/p/2265f56805fa https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/index.ht ...