<h1 style="text-align: center">Django的View(视图)
一,一个简单的视图
from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "
It is now %s." % now
return HttpResponse(html)
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a title="复制代码">
<img src="https://www.jb51.cc/res/2019/02-25/18/51e409b11aa51c150090697429a953ed.gif" alt="复制代码">
当浏览器向服务端请求一个页面时,Django创建一个HttpRequest对象,该对象包含关于请求的元数据。然后,Django加载相应的视图,将这个HttpRequest对象作为第一个参数传递给视图函数。
<span style="color: #0000ff">class
<span style="color: #000000"> Login(View):
</span><span style="color: #0000ff">def</span> dispatch(self,request,*args,**<span style="color: #000000">kwargs):
</span><span style="color: #0000ff">print</span>(<span style="color: #800000">'</span><span style="color: #800000">before</span><span style="color: #800000">'</span><span style="color: #000000">)
obj </span>= super(Login,self).dispatch(request,**<span style="color: #000000">kwargs)
</span><span style="color: #0000ff">print</span>(<span style="color: #800000">'</span><span style="color: #800000">after</span><span style="color: #800000">'</span><span style="color: #000000">)
</span><span style="color: #0000ff">return</span><span style="color: #000000"> obj
</span><span style="color: #0000ff">def</span><span style="color: #000000"> get(self,<span style="color: #800000">'</span><span style="color: #800000">login.html</span><span style="color: #800000">'</span><span style="color: #000000">)
</span><span style="color: #0000ff">def</span><span style="color: #000000"> post(self,request):
</span><span style="color: #0000ff">print</span>(request.POST.get(<span style="color: #800000">'</span><span style="color: #800000">user</span><span style="color: #800000">'</span><span style="color: #000000">))
</span><span style="color: #0000ff">return</span> HttpResponse(<span style="color: #800000">'</span><span style="color: #800000">Login.post</span><span style="color: #800000">'</span><span style="color: #000000">)</span></pre>
0.HttpRequest.scheme
表示请求方案的字符串(通常为http或https)
1<span style="color: #000000">.HttpRequest.body
一个字符串,代表请求报文的主体。在处理非 HTTP 形式的报文时非常有用,例如:二进制图片、XML,Json等。
但是,如果要处理表单数据的时候,推荐还是使用 HttpRequest.POST 。
另外,我们还可以用 python 的类文件方法去操作它,详情参考 HttpRequest.read() 。
2<span style="color: #000000">.HttpRequest.path
一个字符串,表示请求的路径组件(不含域名)。
例如:<span style="color: #800000">"<span style="color: #800000">/music/bands/the_beatles/<span style="color: #800000">"
3<span style="color: #000000">.HttpRequest.method
一个字符串,表示请求使用的HTTP 方法。必须使用大写。
例如:<span style="color: #800000">"<span style="color: #800000">GET<span style="color: #800000">"、<span style="color: #800000">"<span style="color: #800000">POST<span style="color: #800000">"
4<span style="color: #000000">.HttpRequest.encoding
一个字符串,表示提交的数据的编码方式(如果为 None 则表示使用 DEFAULT_CHARSET 的设置,默认为 <span style="color: #800000">'<span style="color: #800000">utf-8<span style="color: #800000">'<span style="color: #000000">)。
这个属性是可写的,你可以修改它来修改访问表单数据使用的编码。
接下来对属性的任何访问(例如从 GET 或 POST 中读取数据)将使用新的 encoding 值。
如果你知道表单数据的编码不是 DEFAULT_CHARSET ,则使用它。
5<span style="color: #000000">.HttpRequest.GET
一个类似于字典的对象,包含 HTTP GET 的所有参数。详情请参考 QueryDict 对象。
6<span style="color: #000000">.HttpRequest.POST
一个类似于字典的对象,如果请求中包含表单数据,则将这些数据封装成 QueryDict 对象。
POST 请求可以带有空的 POST 字典 —— 如果通过 HTTP POST 方法发送一个表单,但是表单中没有任何的数据,QueryDict 对象依然会被创建。
因此,不应该使用 <span style="color: #0000ff">if request.POST 来检查使用的是否是POST 方法;应该使用 <span style="color: #0000ff">if request.method == <span style="color: #800000">"<span style="color: #800000">POST<span style="color: #800000">"<span style="color: #000000">
另外:如果使用 POST 上传文件的话,文件信息将包含在 FILES 属性中。
7<span style="color: #000000">.HttpRequest.COOKIES
一个标准的Python 字典,包含所有的cookie。键和值都为字符串。
8<span style="color: #000000">.HttpRequest.FILES
一个类似于字典的对象,包含所有的上传文件信息。
FILES 中的每个键为<input type=<span style="color: #800000">"<span style="color: #800000">file<span style="color: #800000">" name=<span style="color: #800000">"" /><span style="color: #000000"> 中的name,值则为对应的数据。
注意,FILES 只有在请求的方法为POST 且提交的