Django框架全面讲解 -- Django Views(视图函数)

http请求中产生两个核心对象:
  http请求:HttpRequest对象
  http响应:HttpResponse对象
1.HttpRequest对象
当请求一个页面时,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都是"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          – 服务器的端口(一个字符串)。

2.HttpResponse对象
对于HttpRequest对象来说,是由django自动创建的,但是,HttpResponse对象就必须我们自己创建。每个view请求处理方法必须返回一个HttpResponse对象。
在HttpResponse对象上扩展的常用方法:
- 页面渲染:render(推荐),render_to_response,
- 页面跳转:redirect
- locals: 可以直接将对应视图函数中所有的变量传给模板
Django框架全面讲解 -- Django Views(视图函数)_第1张图片
  值得注意的是对于页面渲染的方法中,render和render_to_response使用方法和功能类似,但是render功能更为强大,推荐使用
3. render()
  render(request, template_name, context=None, content_type=None, status=None, using=None)[source]
结合给定的模板与一个给定的上下文,返回一个字典HttpResponse在渲染文本对象
所需的参数
 template_name 一个模板的使用或模板序列名称全称。如果序列是给定的,存在于第一个模板将被使用。
可选参数
  context 一组字典的值添加到模板中。默认情况下,这是一个空的字典。
  content_type MIME类型用于生成文档。
  status 为响应状态代码。默认值为200
  using 这个名字一个模板引擎的使用将模板。

from django.shortcuts import render

def my_view(request):
    # View code here...
    return render(request, 'myapp/index.html', {
        'foo': 'bar',
    }, content_type='application/xhtml+xml')

你可能感兴趣的:(Django)