Django视图函数
目录
- 第一个视图函数
1)HttpResponse视图响应类型
2)request视图函数参数
3)return视图响应
- 视图函数执行过程
1. 第一个视图函数
在 Django 中,视图函数是一个 Python 函数或者类,开发者主要通过编写视图函数来实现业务逻辑。视图函数首先接受来自浏览器或者客户端的请求,并最终返回响应,视图函数返回的响应可以是 HTML 文件,也可以是 HTTP 协议中的 303 重定向。接下来编写一个简单的视图函数:
from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>It is now %s.</body></html>" % now
return HttpResponse(html)
下面针对后面3 行代码做解析:
1)HttpResponse视图响应类型
从 django.http 模块中导入 HttpResponse,从它简单的名字我们可以得知,它是一种视图的响应类型。
HttpResponse对象的属性与方法
2)request视图函数参数
我们定义了一个名为“Hello_my_django”的函数,Django 规定了,视图函数至少有一个参数,第一个参数必须是 request,request 是 HttpRequest 请求类型的对象,它携带了浏览器的请求信息,所以视图函数的第一个参数必须为 request。
render_to_response()使用比较简单,首先导入render_to_response,然后修改如下:
# return render(request, ‘blog.html’, locals()) #修改如下
return render_to_response(‘blog.html’, locals())
用法基本和render是相同的,直观上的区别就在于render_to_response中没有传入request对象。
3)return视图响应
视图函数要返回响应内容,这里的响应内容是我们用 HTML 标签编写的,把它作为 HttpResponse 的对象返回给浏览器。
默认返回一个临时的重定向;传递permanent=True 可以返回一个永久的重定向。
1、传递一个视图的名称
def my_view(request):
…
return redirect(‘some-view-name’, foo=’bar’)
2、传递要重定向到的一个具体的网址
def my_view(request):
…
return redirect(‘/some/url/‘)
3、当然也可以是一个完整的网址
def my_view(request):
…
return redirect(‘http://example.com/‘)
2. 视图函数执行过程
上面视图函数的代码虽然区区几行,但是已经充分体现了视图层的实现过程。
Django 收到请求以后,首先创建一个带有请求信息的 HttpRequset 对象,将 HttpRequest 的对象 request 作为第一个参数传递给视图函数,视图接收参数后继续向下执行,然后选择加载对应的视图,最后返回 HttpResponse 对象给浏览器。
还没有评论,来说两句吧...