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的更多相关文章

  1. Django基础之视图(views)层、模板层

    目录 Django基础之视图(views)层.模板层 JsonResponse 向前端返回一个json格式字符串的两种方式 重写Django中的json的某个方法 form表单上传文件 FBV与CBV ...

  2. Django入门-通用视图

    文档:https://docs.djangoproject.com/en/1.11/topics/class-based-views/ from django.shortcuts import get ...

  3. django 中的视图(Views)

    Views Django中views里面的代码就是一个一个函数逻辑, 处理客户端(浏览器)发送的HTTPRequest, 然后返回HTTPResponse, http请求中产生两个核心对象: http ...

  4. Django:视图views(一)

    1.环境搭建 在django中,视图负责与web请求进行交互 视图本质上是一个Python函数,定义在booktest/views.py.通过django1/urls.py路由到该视图中. 首先经过创 ...

  5. Django (六) 视图 views

    views 1. 视图及HttpRequest 和HttpResponse Django中的视图主要用来接受Web请求,并做出响应. 视图的本质就是一个Python中的函数 视图的响应分为两大类 1) ...

  6. 【Django笔记1】-视图(views)与模板(templates)

    视图(views)与模板(templates) 1,视图(views) ​ 将接收到的数据赋值给模板(渲染),再传递给浏览器.HTML代码可以直接放在views.py(文件名可任意更换),也可以放在t ...

  7. Django 入门

    Django 入门 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模型,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容 ...

  8. Django入门笔记

    Django入门笔记 **文档包含Django安装包.学习的笔记.代码等 安装 Django参考附件,只需要把附件拷贝到你需要的目录就行.Django是1.8.16版本 Python:在附件中,其中有 ...

  9. Django入门与实践 17-26章总结

    Django入门与实践-第17章:保护视图 Django 有一个内置的视图装饰器 来避免它被未登录的用户访问: 现在如果用户没有登录,将被重定向到登录页面: 现在尝试登录,登录成功后,应用程序会跳转到 ...

随机推荐

  1. .NET Core项目部署到Linux(Centos7)(七)启动和停止.NET Core项目

    目录 1.前言 2.环境和软件的准备 3.创建.NET Core API项目 4.VMware Workstation虚拟机及Centos 7安装 5.Centos 7安装.NET Core环境 6. ...

  2. Mysql千万级记录表分表策略

    目前,比较流行的分表为2倍扩容. 表A(id, name, age, sex) 基于自增id分表, 通过触发器先同步A到B, 程序通过mod 2操作数据,然后drop掉触发器,在 删除两个A表的偶数i ...

  3. python爬取疫情数据详解

    首先逐步分析每行代码的意思: 这是要引入的东西: from os import path import requests from bs4 import BeautifulSoup import js ...

  4. HTML5实现刷脸支付

    最近刷脸支付很火,老板们当然要追赶时代潮流,于是就有了刷脸支付这个项目.前端实现关键的技术是摄像头录像,拍照和人脸比对,本文来探讨一下如何在html5环境中如何实现刷脸支付以及开发过程中遇到的问题. ...

  5. SpringMVC框架详细教程(二)

    创建动态Web项目 1.创建动态Web项目: 打开Eclipse,在Package Explorer右击,创建项目,选择动态Web项目(Dynamic Web Project). 填写项目名称,并选择 ...

  6. leetcode 703. Kth Largest Element in a Stream & c++ priority_queue & minHeap/maxHeap

    703. Kth Largest Element in a Stream & c++ priority_queue & minHeap/maxHeap 相关链接 leetcode c+ ...

  7. vue的组件缓存(返回页面不刷新)

    每次使用返回是页面总是会刷新 导致了一些体验上的不愉快 现在 发现vue中的一个很方便的方法还可以用来优化性能就是: keep-alive缓存组件 <router-view v-if=" ...

  8. qad progress数据库启动出错解决

    1. 启动时报:SYSTEM ERROR: Wrong dbkey in block. Found 0, should be 6342528 in area 36.  (439) ** Save fi ...

  9. go开发包下载,IDE工具下载,基础配置命令

    目录 go语言介绍 go开发包下载 命令介绍 配置 修改配置 golandIDE工具下载 编译并执行命令 命令 go语言介绍 # 1 诞生于 2009年,10年的时间,非常新的语言,天然支持并发,很新 ...

  10. L17 AlexNet VGG NiN GoogLeNet

    深度卷积神经网络(AlexNet) LeNet: 在大的真实数据集上的表现并不尽如⼈意. 1.神经网络计算复杂. 2.还没有⼤量深⼊研究参数初始化和⾮凸优化算法等诸多领域. 机器学习的特征提取:手工定 ...