Django视图函数的具体使用

视图是 MTV 设计模式中的 V 层,它是实现业务逻辑的关键层,可以用来连接 M 层与 T 层,起着纽带般的作用,在《Django MTV和MVC的区别》中也做了相应的介绍,所以它的重要性可想而知。

1. 第一个视图函数

在 Django 中,视图函数是一个 Python 函数或者类,开发者主要通过编写视图函数来实现业务逻辑。视图函数首先接受来自浏览器或者客户端的请求,并最终返回响应,视图函数返回的响应可以是 HTML 文件,也可以是 HTTP 协议中的 303 重定向。接下来编写一个简单的视图函数:

from django.http import HttpResponse
def Hello_my_django(request):
 return HttpResponse('<html><body>Hello my Django</body></html>')

下面针对以上 3 行代码做解析:

1)HttpResponse视图响应类型
从 django.http 模块中导入 HttpResponse,从它简单的名字我们可以得知,它是一种视图的响应类型。

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

  • - 页面渲染:render(推荐),render_to_response,
  • - 页面跳转:redirect
  • - locals: 可以直接将对应视图函数中所有的变量传给模板

2)视图函数参数request
我们定义了一个名为“Hello_my_django”的函数,Django 规定了,视图函数至少有一个参数,第一个参数必须是 request,request 是 HttpRequest 请求类型的对象,它携带了浏览器的请求信息,所以视图函数的第一个参数必须为 request。

当请求一个页面时,Django 创建一个 HttpRequest对象包含原数据的请求。然后 Django 加载适当的视图,通过 HttpRequest作为视图函数的第一个参数。每个视图负责返回一个HttpResponse目标。

path:  请求页面的全路径,不包括域名
method:  请求中使用的HTTP方法的字符串表示。全大写表示。例如
     if req.method=="GET":
        do_something()
     elseif req.method=="POST":
        do_something_else()
GET:   包含所有HTTP GET参数的类字典对象
POST:  包含所有HTTP POST参数的类字典对象
    服务器收到空的POST请求的情况也是可能发生的,也就是说,表单form通过
    HTTP POST方法提交请求,但是表单中可能没有数据,因此不能使用
    if req.POST来判断是否使用了HTTP POST 方法;应该使用 if req.method=="POST"
COOKIES:  包含所有cookies的标准Python字典对象;keys和values都是字符串。
FILES:  包含所有上传文件的类字典对象;FILES中的每一个Key都是<input type="file" name="" />标签中
   name属性的值,FILES中的每一个value同时也是一个标准的python字典对象,包含下面三个Keys:
   filename:  上传文件名,用字符串表示
   content_type: 上传文件的Content Type
   content:  上传文件的原始内容
user:  是一个django.contrib.auth.models.User对象,代表当前登陆的用户。如果访问用户当前
    没有登陆,user将被初始化为django.contrib.auth.models.AnonymousUser的实例。你
    可以通过user的is_authenticated()方法来辨别用户是否登陆:
    if req.user.is_authenticated();只有激活Django中的AuthenticationMiddleware
    时该属性才可用
session: 唯一可读写的属性,代表当前会话的字典对象;自己有激活Django中的session支持时该属性才可用。
META:  一个标准的Python字典包含所有可用的HTTP头。可用标题取决于客户端和服务器,但这里是一些例子:
   CONTENT_LENGTH  – 请求体的长度(一个字符串)。
   CONTENT_TYPE   – 请求体的类型。
   HTTP_ACCEPT   - 为响应–可以接受的内容类型。
   HTTP_ACCEPT_ENCODING – 接受编码的响应
   HTTP_ACCEPT_LANGUAGE – 接受语言的反应
   HTTP_HOST   – 客户端发送的HTTP主机头。
   HTTP_REFERER   – 参考页面
   HTTP_USER_AGENT  – 客户端的用户代理字符串。
   QUERY_STRING   – 查询字符串,作为一个单一的(分析的)字符串。
   REMOTE_ADDR   – 客户端的IP地址
   REMOTE_HOST   – 客户端的主机名
   REMOTE_USER   – 用户通过Web服务器的身份验证。
   REQUEST_METHOD  – 字符串,如"GET"或"POST"
   SERVER_NAME   – 服务器的主机名
   SERVER_PORT   – 服务器的端口(一个字符串)。

3)return视图响应
视图函数要返回响应内容,这里的响应内容是我们用 HTML 标签编写的,把它作为 HttpResponse 的对象返回给浏览器。

2. 视图函数执行过程

上面视图函数的代码虽然区区几行,但是已经充分体现了视图层的实现过程。 Django 收到请求以后,首先创建一个带有请求信息的 HttpRequset 对象,将 HttpRequest 的对象 request 作为第一个参数传递给视图函数,视图接收参数后继续向下执行,然后选择加载对应的视图,最后返回 HttpResponse 对象给浏览器。

通过本节的介绍,我们应该理解 View 视图函数的作用,以及视图函数的定义过程。

到此这篇关于Django视图函数的具体使用的文章就介绍到这了,更多相关Django视图函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Django框架视图函数设计示例

    本文实例讲述了Django框架视图函数.分享给大家供大家参考,具体如下: 视图函数即为处理HTTP请求的python函数.一般情况下,视图函数的功能是通过模型层对象处理数据,然后通过下面三种方式返回HTTP Response: 直接构造HTTP BODY 用数据渲染HTML模板文件 如果有逻辑错误就返回HTTP错误或者其他状态! 1.直接构造HTML页面 对于简单的页面,可以直接在视图函数汇总构造返回给客户端的字符串,通过HttpResponse函数封装后返回: #views.py from d

  • Django中URL视图函数的一些高级概念介绍

    说到关于请求方法的分支,让我们来看一下可以用什么好的方法来实现它. 考虑这个 URLconf/view 设计: # urls.py from django.conf.urls.defaults import * from mysite import views urlpatterns = patterns('', # ... (r'^somepage/$', views.some_page), # ... ) # views.py from django.http import Http404,

  • 在Python的Django框架中包装视图函数

    我们最终的视图技巧利用了一个高级python技术. 假设你发现自己在各个不同视图里重复了大量代码,就像 这个例子: def my_view1(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/accounts/login/') # ... return render_to_response('template1.html') def my_view2(request): if not r

  • Django基础三之视图函数的使用方法

    一 Django的视图函数view 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. 无论视图本身包含什么逻辑,都要返回响应.代码写在哪里也无所谓,只要它在你当前项目目录下面.除此之外没有更多的要求了--可以说"没有什么神奇的地方".为了将代码放在某处,大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名为view

  • Django中传递参数到URLconf的视图函数中的方法

    有时你会发现你写的视图函数是十分类似的,只有一点点的不同. 比如说,你有两个视图,它们的内容是一致的,除了它们所用的模板不太一样: # urls.py from django.conf.urls.defaults import * from mysite import views urlpatterns = patterns('', (r'^foo/$', views.foo_view), (r'^bar/$', views.bar_view), ) # views.py from django

  • Django视图函数的具体使用

    视图是 MTV 设计模式中的 V 层,它是实现业务逻辑的关键层,可以用来连接 M 层与 T 层,起着纽带般的作用,在<Django MTV和MVC的区别>中也做了相应的介绍,所以它的重要性可想而知. 1. 第一个视图函数 在 Django 中,视图函数是一个 Python 函数或者类,开发者主要通过编写视图函数来实现业务逻辑.视图函数首先接受来自浏览器或者客户端的请求,并最终返回响应,视图函数返回的响应可以是 HTML 文件,也可以是 HTTP 协议中的 303 重定向.接下来编写一个简单的视

  • 详解django中视图函数的FBV和CBV

    目录 1.什么是FBV和CBV 2.普通FBV形式 3.CBV形式 3.1 CBV形式的路由 3.2 CBV形式的视图函数 4.CBV源码分析 5.CBV添加装饰器的三种方式 1.什么是FBV和CBV FBV是指视图函数以普通函数的形式:CBV是指视图函数以类的方式. 2.普通FBV形式 def index(request): return HttpResponse('index') 3.CBV形式 3.1 CBV形式的路由 path(r'^login/',views.MyLogin.as_vi

  • Django视图和URL配置详解

    本文研究的主要是Django视图和URL配置,具体介绍如下. 一.视图 1.在mysite文件夹下,创建views.py文件(文件名没有特别的要求): from django.http import HttpResponse def hello(request): return HttpResponse("Hello world") 2.修改mysite文件夹下的urls.py文件: from django.conf.urls import url from django.contri

  • 对DJango视图(views)和模版(templates)的使用详解

    视图 在django中,视图对WEB请求进行回应 视图接收reqeust对象作为第一个参数,包含了请求的信息 视图就是一个Python函数,被定义在views.py中 定义完成视图后,需要配置urlconf,否则无法处理请求 在Django中,定义URLconf包括正则表达式.视图两部分 Django使用正则表达式匹配请求的URL,一旦匹配成功,则调用应用的视图 注意:只匹配路径部分,即除去域名.参数后的字符串 在test1/urls.py插入booktest,使主urlconf连接到bookt

  • Flask框架实现给视图函数增加装饰器操作示例

    本文实例讲述了Flask框架实现给视图函数增加装饰器操作.分享给大家供大家参考,具体如下: 在@app.route的情况下增加装饰器的写法: from flask import Flask,request,render_template,redirect,session,url_for,views from flask import render_template app = Flask(__name__) #实例化flask对象 app.debug = True #能够随时更改自动重启,不加的

随机推荐