46.1、django view 视图函数说明:

1、http请求中产生两个核心对象:

(1)http请求:HttpRequest对象。

(2)http响应:HttpResponse对象。

2、views 函数是接收用户请求,处理业务逻辑的函数:

46.2、HttpRequest 对象的属性和方法:

1、path:

请求页面的全路径,不包括域名。

2、method:

请求中使用的HTTP方法的字符串表示。全大写表示。

例如:

if req.method == "GET":

do_something()

elseif req.method == "POST":

do_something_else()

3、GET:

包含所有HTTP GET参数的类字典对象。

4、POST:

包含所有HTTP POST参数的类字典对象。

服务器收到空的POST请求的情况也是可能发生的,也就是说,表单 form 通过 HTTP POST 方法提交请求,

但是表单中可能没有数据,因此不能使用 if request.POST 来判断是否使用了 HTTP POST 方法。应该使用

if request.method == "POST" 来判断。

5、COOKIES:

包含所有 cookies 的标准 Python 字典对象,keys 和 values 都是字符串。

6、FILES:

包含所有上传文件的类字典对象,FILES 中的每一个 Key 都是 <input type="file" name="" /> 标签中

name 属性的值,FILES 中的每一个 value 同时也是一个标准的 python 字典对象,包含下面三个Keys:

filename:上传文件名,用字符串表示。

content_type:上传文件的 Content Type。

content:上传文件的原始内容

7、user:

是一个 django.contrib.auth.models.User 对象,代表当前登陆的用户。如果访问用户当前没有登陆,user

将被初始化为 django.contrib.auth.models.AnonymousUser 的实例。你可以通过 user 的

is_authenticated() 方法来辨别用户是否登陆。if request.user.is_authenticated() 只有激活 Django 中的

'django.contrib.auth.middleware.AuthenticationMiddleware' 时该属性才可用。

8、session:

唯一可读写的属性,代表当前会话的字典对象。只有激活 Django 中的

'django.contrib.sessions.middleware.SessionMiddleware' 时该属性才可用。

9、get_full_path():

比如访问:http://127.0.0.1:8080/blog/index/?name=123

request.get_full_path() 得到的结果就是 /blog/index/?name=123,request.path 得到的结果是 /blog/index/。

10、get_port():

获得 django 服务的端口号。

11、POST 获得表单数据:

(1)获得单个数据(比如 input 框):

request.POST.get('')

(2)获得列表数据(比如 select 框):

request.POST.getlist('')

46.3、HttpResponse 对象:

1、说明:

对于 HttpRequest 对象来说,是由 django 自动创建的,但是 HttpResponse 对象就必须我们自己创建。每个 view

请求处理方法必须返回一个 HttpResponse 对象。引用 HttpResponse 模块的方法为

from django.shortcuts import HttpResponse。

2、在 HttpResponse 对象上扩展的常用方法:

(1)页面渲染:render(request, <".html文件">)

(2)页面跳转:redirect("路径")

(3)locals():可以直接将函数中所有的变量传给模板。

(4){"<自定以变量名>":<变量>, ......}:根据需要将函数中的变量传给模板。

3、render 和 redirect 的区别:

(1)区别:

render 返回页面内容(渲染变量到模板中),并且没有发送第二次请求,用户浏览器上的 URL 地址不会发生改变。

redirect 发送了第二次请求,是个跳转函数,而且会返回重定向 302 的状态码,用户浏览器上的 URL 地址会发生改变。

(2)补充,什么是重定向:

重定向指的是 HTTP 重定向,它是 HTTP 协议规定的一种机制。这种机制是这样工作的,当 client 向 server 发送一个

请求,要求获取一个资源时,在 server 接收到这个请求后发现请求的这个资源实际存放在另一个位置,于是 server 在

返回的 response 中写入那个请求资源的正确的 URL,并设置 reponse 的状态码为 302,表示这是一个要求浏览器重

定向的response,当 client 接受到这个 response 后就会根据新的 URL 重新发起请求。重定向有一个典型的特征,即

当一个请求被重定向以后,最终浏览器上显示的URL往往不再是开始时请求的那个URL了,这就是重定向的由来。

302 重定向:只是暂时的重定向。应用场景:未登陆的用户访问用户中心重定向到登录页面,访问404页面会重新定向到首页。

301 重定向:是永久的重定向。 应用场景:域名跳转。

(3)小结:

1)reader(request,'.html'):

返回的是template页面,不会改变url地址。

2)redict("url"):

返回的是url地址,会改变url地址。

46、django工程(view)的更多相关文章

  1. Django工程的建立以及小网站的编写

    这篇博文会详细的介绍如何创建django工程,介绍我如何做了第一个网站.本文基于windows7安装了python2.7.12,Django1.8.18(LTS)版.采用的IDE为pycharm.建议 ...

  2. Django工程读取mongodb并使用分页器

    pycharm开发django工程(二) 项目需求: 1. 从mongodb中读取数据,并显示到网页中 2. 在网页显示的每一页加入分页符 首先使用pycharm的企业版新建一个django的虚拟工程 ...

  3. Django的View(视图)和路由系统

    一.Django的View(视图) 1.介绍 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一 ...

  4. Django的View(视图)

    Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误, ...

  5. Django工程搭建

    -----环境安装 1.创建虚拟环境 mkvirtualenv django_py3_1.11 -p python3   2.安装django pip install django==1.11.11 ...

  6. python web框架 django 工程 创建 目录介绍

    # 创建Django工程django-admin startproject [工程名称] 默认创建django 项目都会自带这些东西 django setting 配置文件 django可以配置缓存 ...

  7. django学习笔记【001】django版本的确定&创建一个django工程

    2.3 查看当前的django版本 python3. -m django --version 2.3.1 创建一个django工程 django-admin startproject mysite 在 ...

  8. Django工程目录结构优化

    1.我看到这篇文章,写的不错,在此复制了一份,防止以后找不到! 感谢作者的翻译--->原文的链接:http://www.loonapp.com/blog/11/ 如果原文存在,请打开原文件阅读 ...

  9. Django工程创建

    方法一: 1.win+r进入cmd命令窗口: 2.找到Django的安装地址: 3.cmd窗口中利用cd 进入相应的文件夹,再输入命令如下: django-admin.exe startproject ...

  10. Django基于Pycharm开发之一【创建django工程】

    Django的工程结构,可以通过pycharm里面,选择创建django工程来直接创建,也可以通过命令行通过pip来安装. 一.通过命令行安装的步骤 Install Python. Install a ...

随机推荐

  1. 诸神之眼 - Nmap 教程

    *注: www.heihei.work 为本人测试网站,可由 官方测试网站 scanme.nmap.org代替. NO.11.扫描端口开放的服务nmap -T4 -A -v www.heiehi.wo ...

  2. centos7下cups + samba共打印服务

    centos7下cups + samba共打印服务 2015年8月21日admin发表评论阅读评论   这个算是rhce课程的篇外篇,Samba除了提供文件共享外,也可以像windows下的共享一样提 ...

  3. ubuntu中软件的升级管理-(转自Josh_)

    给Ubuntu软件升级命令 sudo apt-get update  --更新软件源 sudo apt-get upgrade -更新已经安装的软件 以非root用户更新系统 sudo: sudo是l ...

  4. 3.2-3 tac、more

    3.2 tac命令 是cat的反向拼写,因此命令的功能为反向显示文件内容.cat命令是从第一行开始读取文本输出的,而tac则是从最后一行开始读取文本并进行反向输出,需要注意的是,2个命令都是以一行文本 ...

  5. php代码审计之命令执行中windows/linux的差异化问题

    昨天好基友发来了一段代码,还是挺有趣的,记录下: <?php $a = '\''.str_replace("'","\'",$_GET[1]).'\''; ...

  6. 你是不是对MD5算法有误解?

    大家常听到"MD5加密"."对称加密"."非对称加密",那么MD5属于哪种加密算法? 面试问这样的问题,准是在给你挖坑. "MD5 ...

  7. .Net Core Api发布时报502.5 [The Application process failed to Start]问题的解决原因

       碰到这样的错误,在网上找了很久很久.我自己在部署的时候已经把Core 部署需要的环境包在服务器安装好了.还会报这个错,然后在网上找的安装了一个系统补丁包!安装之后还是不行.最后我把服务器重启了一 ...

  8. ARM CPU自动调度神经网络

    ARM CPU自动调度神经网络 对特定设备和工作负载进行自动调度,对于获得最佳性能至关重要.通过RPC使用自动调度器为ARM CPU调度整个神经网络. 为了自动调度神经网络,将网络划分为小的子图,进行 ...

  9. iOS视频硬编码技术

    iOS视频硬编码技术 一.iOS视频采集硬编码 基本原理 硬编码 & 软编码 硬编码:通过系统自带的Camera录制视频,实际上调用的是底层的高清编码硬件模块,即显卡,不使用CPU,速度快 软 ...

  10. [源码解析] 深度学习分布式训练框架 horovod (2) --- 从使用者角度切入

    [源码解析] 深度学习分布式训练框架 horovod (2) --- 从使用者角度切入 目录 [源码解析] 深度学习分布式训练框架 horovod (2) --- 从使用者角度切入 0x00 摘要 0 ...