Django入门3:视图views
1、获取用户请求数据
1.1 request.GET 获取request.method='GET'的数据
request.GET.get('name',None)
1.2 request.POST 获取request.method='POST'的数据
#一般针对传入的单个值的情形,如type='text','redio','password':
request.POST.get('name',None)
#一般针对传入的多个值的情形,如type='checkbox';<select multiple><option></option></select>
request.POST.getlist('name',None)
1.3 request.FILES 获取form表单文件
获取文件时,POST中不带有其他信息,两者独立开来,更加方便使用。
特别注意的是,只有当request方法是POST,且发送request的<form>有属性enctype="multipart/form-data"时,request.FILES中包含文件数据,否则request.FILES为空。
PS:一般情形下,默认开发时,GET和POST在不同情形下使用。
GET:获取数据
POST:提交数据
2、checkbox等多选的内容
request.POST.getlist()
3、上传文件
- <form action="/login" method="POST" enctype="multipart/form-data"> # 上传文件,form标签做特殊设置
- <input type="file" name="fafafa"/>
- </form>
login.html:
- def login(request):
- if request.method=='GET':
- return render(request,'login.html')
- elif request.method=='POST':
- obj=request.FILES.get('fafafa')
- import os
- file_path=os.path.join('upload',obj.name)
- f=open(file_path,'wb')
- for i in obj.chunks():
- f.write(i)
- f.close()
views.py:
4、FBV & CBV
4.1 FBV(function base views) 就是在视图里使用函数处理请求
- from django.conf.urls import url
- from django.contrib import admin
- from app01 import views
- urlpatterns = [
- url(r'^admin/', admin.site.urls),
- url(r'^index',views.index),
- ]
urls.py:
- from django.shortcuts import HttpResponse
- def index(request):
- return HttpResponse('Index')
views.py:
4.2 CBV(class base views) 就是在视图里使用类处理请求。
- from django.conf.urls import url
- from django.contrib import admin
- from app01 import views
- urlpatterns = [
- url(r'^admin/', admin.site.urls),
- url(r'^login',views.login),
- url(r'^index',views.index),
- url(r'^home/', views.Home.as_view()), #views.类名.as_view()是固定用法。
- ]
urls.py:
- from django.shortcuts import render
- from django.views import View
- class Home(View):
- def get(self,request):
- print(request.method)
- return render(request, 'home.html')
- def post(self,request):
- print(request.method)
- return render(request, 'home.html')
views.py:
# 类要继承 View ,类中函数名必须小写。
注:
class View(object):
"""
Intentionally simple parent class for all views. Only implements
dispatch-by-method and simple sanity checking.
"""
http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace'] #所有的request.method方法。
从客户端接收到请求头后,会先执行View中的dispatch方法,再通过反射的方式找到对应的request.method的方法。
如果想要在dispatch中增加部分功能,可以在继承View类时,重写dispatch方法。
- from django.views import View
- class Home(View):
- def dispatch(self, request, *args, **kwargs):
- # 调用父类中的dispatch
- print('before')
- result = super(Home,self).dispatch(request, *args, **kwargs)
- print('after')
- return result
- def get(self,request):
- print(request.method)
- return render(request, 'home.html')
- def post(self,request):
- print(request.method)
- return render(request, 'home.html')
建议:两者都用,在不同的框架内,有些两者都支持,有些只支持其中之一。两种在生产环境中没有优先级,均可使用。
5、装饰器
后补
6、给用户返回数据的方式
render(request, "templates内模板的文件的路径", {'k1': [1,2,3,4],"k2": {'name': '张扬','age': 73}})
redirect("URL")
HttpResponse(字符串)
Django入门3:视图views的更多相关文章
- Django基础之视图(views)层、模板层
目录 Django基础之视图(views)层.模板层 JsonResponse 向前端返回一个json格式字符串的两种方式 重写Django中的json的某个方法 form表单上传文件 FBV与CBV ...
- Django入门-通用视图
文档:https://docs.djangoproject.com/en/1.11/topics/class-based-views/ from django.shortcuts import get ...
- django 中的视图(Views)
Views Django中views里面的代码就是一个一个函数逻辑, 处理客户端(浏览器)发送的HTTPRequest, 然后返回HTTPResponse, http请求中产生两个核心对象: http ...
- Django:视图views(一)
1.环境搭建 在django中,视图负责与web请求进行交互 视图本质上是一个Python函数,定义在booktest/views.py.通过django1/urls.py路由到该视图中. 首先经过创 ...
- Django (六) 视图 views
views 1. 视图及HttpRequest 和HttpResponse Django中的视图主要用来接受Web请求,并做出响应. 视图的本质就是一个Python中的函数 视图的响应分为两大类 1) ...
- 【Django笔记1】-视图(views)与模板(templates)
视图(views)与模板(templates) 1,视图(views) 将接收到的数据赋值给模板(渲染),再传递给浏览器.HTML代码可以直接放在views.py(文件名可任意更换),也可以放在t ...
- Django 入门
Django 入门 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模型,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容 ...
- Django入门笔记
Django入门笔记 **文档包含Django安装包.学习的笔记.代码等 安装 Django参考附件,只需要把附件拷贝到你需要的目录就行.Django是1.8.16版本 Python:在附件中,其中有 ...
- Django入门与实践 17-26章总结
Django入门与实践-第17章:保护视图 Django 有一个内置的视图装饰器 来避免它被未登录的用户访问: 现在如果用户没有登录,将被重定向到登录页面: 现在尝试登录,登录成功后,应用程序会跳转到 ...
随机推荐
- java 第六周课后作业
1.定义长度位5的整型数组,输入他们的值,用冒泡排序后输出. Scanner sc = new Scanner(System.in); int[] arr = new int[5]; for (int ...
- Shell:Day07.笔记
函数:1.函数介绍function 为了避免代码重复使用,我们一般通过函数编写代码块,而这一个代码块用来实现某种功能. 且,这个功能在后面的代码中,会重复调用: def 2.函数的语法格式 函数的写 ...
- VXLAN 基础教程:VXLAN 协议原理介绍
VXLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网),是一种虚拟化隧道通信技术.它是一种 Overlay(覆盖网络)技术,通过三层的网络来搭建虚拟 ...
- 24 接口 Interface
/** Java语言的继承是单一继承,一个子类只能有一个父类(一个儿子只能有一个亲爹)* Java语言给我们提供了一种机制,用于处理继承单一的局限性的,接口* 接口:接口是一个比抽象类还抽象的类,接口 ...
- Markdown 语法自用
Markdown 语法自用 1. 标题 用#来标记 hi hihi hihihi hihihiih hihihihihi hihihihihihi 2. 段落格式 2.1 字体 斜体:文字两端加上 ...
- 如果我选择IT行业,会不会在几年,或者几年后被社会给淘汰??
IT互联网各行业薪资占比,你能拿到多少?随着移动互联网时代的发展,IT行业的需求量也越来越大,而且每年都会新增,当然也会有淘汰. 人生如此之短,都不喜欢自己虚度光阴,也不希望自己所努力的东西成为历史, ...
- 【three.js第四课】自定义材料、贴图。
1.先去下载6张不同的图片素材放到项目中. 2.在[three.js第三课]的代码基础上添加自定义的材料 //自定义材料 cubeMaterial 数组 //map:用于加载图片,THREE.Text ...
- HttpWebRequest在Post的时候,遇到特殊符号+号(加号)变成空格了
今天在调用一个外部接口的时候遇到一个问题,外部接口说要用FOMR的POST方法提交. OK,没问题,我加了个ASPX页面,里面加了个FORM表单和一些元素,提交,返回值成功.注意看下面这一句:但返回值 ...
- PAS
一.概念 二.安装 打开Delphi,在主菜单上选择Component,单击Install Component,出现图所示的对话框.有两个选择,装到已经存在的包里面和装到新的包里面.我们选择后者,单击 ...
- Daily Scrum 1/18/2016
Yandong & Zhaoyang: Prepare bug bash slides for Beta release; Dong & Fuchen:Prepare demo for ...