django views视图函数

Django views.py视图文件

一. 创建views.py文件在工程文件夹根目录创建views.py视图文件,其实任意文件名都可以,使用views是为了遵循传统。

注:所有的views函数都需要以request对象作为第一个参数request代表客户端浏览器向服务器请求的一个信息字符串,views中的函数需要接收这个字符串才行对他进行处理。

 

.HttpResponse函数:

views.py里面,我们可以使用HttpResponse直接给页面返回一个字符串。

调用HttpResponse直接给页面返回一个字符串。

from django.http import HttpResponse

def hello(request):    

return HttpResponse("Hello World!")

三.调用render函数返回一个网页:

render 英文是提供的意思:

render 是一个主要用来返回一个html模板页面的函数。

render(request,template_name,context=None,content_type=None,status=None,

using=None)

此方法的作用是:接收到一个请求,结合一个给定的模板和一个给定的context上下文字典,并返回一个渲染后的 HttpResponse 对象。通俗的讲就是接收到一个请求,然后指定好一个html模板,并把上下文context字典中的内容, 加载进templates_name中指定的模板文件, 并通过浏览器渲染呈现.

参数详解:

request: 是一个固定参数, 就是指通过接受到的通过wsgi处理过的客户端浏览器请求数

据。

template_name:templates中定义的HTML文件, 要注意路径比如'templatespollsindex.html', 参数就要写‘pollsindex.html’

context: 要传入上下文中用于渲染呈现的数据, 默认是一个字典格式,键即下文html模板中需要被替换的元素,键值即在views视图函数中需要传到html模板中变量需要替换成的值。

content_type: 生成的文档要使用的MIME 类型。默认为DEFAULT_CONTENT_TYPE 设置的值。

status: http的响应代码,默认是200.

using: 用于加载模板使用的模板引擎的名称。

常见的MIME类型(通用型):

超文本标记语言文本 .html text/html

xml文档 .xml text/xml

XHTML文档 .xhtml application/xhtml+xml

普通文本 .txt text/plain

RTF文本 .rtf application/rtf

PDF文档 .pdf application/pdf

Microsoft Word文件 .word application/msword

PNG图像 .png image/png

GIF图形 .gif image/gif

JPEG图形 .jpeg,.jpg image/jpeg

au声音文件 .au audio/basic

MIDI音乐文件 mid,.midi audio/midi,audio/x-midi

RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio

MPEG文件 .mpg,.mpeg video/mpeg

AVI文件 .avi video/x-msvideo

GZIP文件 .gz application/x-gzip

TAR文件 .tar application/x-tar

任意的二进制数据 application/octet-stream

注:使用默认就能返回所有类型。

from django.shortcuts import render

def index(request):

    context={}                          #首先初始化这个字典

    context['hello']= "Hello World!"   #context中的hello键代表Hello World!字

符串

    return render(request, 'index.html', context)

 

而在index.html文件中:

 

参数hello需要用双括号括起来代表需要替换的字符:

如图中的{{hello}}

而在views视图文件中的context字典则代表了上下文需要替换的文字和字符串,即context字典元素中的键值即末班中需要替换的变量。即context 字典中元素的键值 "hello" 对应了模板中的变量 "{{ hello }}"。

这样通过render函数我们就完成了使用模板来输出数据,从而实现数据与视图分离。

四.调用redirect 函数重定向

redirect:英文意思改变线路,改变方向,在我们这里是重定向的意思。

参数可以是:

一个模型:将调用模型的get_absolute_url() 函数

一个视图,可以带有参数:将使用urlresolvers.reverse 来反向解析名称

一个绝对的或相对的URL,将原封不动的作为重定向的位置,即返回一个模板位置。

默认返回一个临时的重定向;传递permanent=True 可以返回一个永久的重定向。

示例:

你可以用多种方式使用redirect() 函数。

传递一个对象:

将调用get_absolute_url() 方法来获取重定向的URL:

from django.shortcuts import redirect

def my_view(request):

    ...

    object = MyModel.objects.get(...)

    return redirect(object)

传递一个视图的名称:

可以带有位置参数和关键字参数;将使用reverse() 方法反向解析URL: 

def my_view(request):

    ...

    return redirect('some-view-name', foo='bar')

传递要重定向的一个硬编码的URL

def my_view(request):

    ...

    return redirect('/some/url/')

也可以是一个完整的URL,可以是返回外部的网站,这里测试返回百度网站:

from django.shortcuts import render,redirect

def blog(request):

    return redirect("http://www.baidu.com")

 

def my_view(request):

    ...

    return redirect('http://example.com/')

默认情况下,redirect() 返回一个临时重定向。以上所有的形式都接收一个permanent 参数;如果设置为True,将返回一个永久的重定向:

def my_view(request):

    ...

    object = MyModel.objects.get(...)

    return redirect(object, permanent=True)  

原文地址:https://www.cnblogs.com/fengjunhua/p/7813317.html