Django -- view(视图)
view(视图)
一个视图函数,或者简短来说叫做视图,是一个简单的Python函数,它接受web请求,并且返回web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . . 是任何东西都可以。无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你的Python目录下面。除此之外没有更多的要求了——可以说“没有什么神奇的地方”。为了能够把代码放在某个地方,惯例是把视图放在叫做views.py的文件中,然后把它放到你的项目或者应用目录里。
下面是一个返回当前日期和时间作为HTML文档的视图:
1 from django.http import HttpResponse 2 import datetime 3 4 def current_datetime(request): 5 now = datetime.datetime.now() 6 html = "<html><body>It is now %s.</body></html>" % now 7 return HttpResponse(html)
让我们逐行阅读上面的代码:
- 首先,我们从 django.http模块导入了HttpResponse类,以及Python的datetime库。
- 接着,我们定义了current_datetime函数。它是一个视图函数。每个视图函数都应接收HttpRequest对象作为第一个参数,一般叫做request。
- 注意视图函数的名称并不重要;不需要用一个统一的命名方式来命名,以便让Django识别它。我们将其命名为current_datetime,是因为这个名称能够精确地反映出它的功能。
- 这个视图会返回一个HttpResponse对象,其中包含生成的响应。每个视图函数都要返回HttpResponse对象
HttpResponse函数:
在views.py里面,我们可以使用HttpResponse直接给页面返回一个字符串。调用HttpResponse直接给页面返回一个字符串。
1 from django.http import HttpResponse 2 3 def hello(request): 4 5 return HttpResponse("Hello World!")
render函数
render 是一个主要用来返回一个html模板页面的函数。
render(request,template_name,context=None,content_type=None,status=None,using=None)
此方法的作用是:接收到一个请求,结合一个给定的模板和一个给定的context上下文字典,并返回一个渲染后的 HttpResponse 对象。通俗的讲就是接收到一个请求,然后指定好一个html模板,并把上下文context字典中的内容, 加载进templates_name中指定的模板文件, 并通过浏览器渲染呈现.
1 request: 是一个固定参数, 就是指通过接受到的通过wsgi处理过的客户端浏览器请求数据。 2 3 template_name:templates中定义的HTML文件, 要注意路径比如'templates\polls\index.html', 参数就要写‘polls\index.html’ 4 5 context: 要传入上下文中用于渲染呈现的数据, 默认是一个字典格式,键即下文html模板中需要被替换的元素,键值即在views视图函数中需要传到html模板中变量需要替换成的值。 6 7 content_type: 生成的文档要使用的MIME 类型。默认为DEFAULT_CONTENT_TYPE 设置的值。 8 9 status: http的响应代码,默认是200. 10 11 using: 用于加载模板使用的模板引擎的名称。
redirect 函数
redirect 函数的主要作用是重定向