前端之家收集整理的这篇文章主要介绍了
Django:视图,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
<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="/res/2019/02-25/18/51e409b11aa51c150090697429a953ed.gif" alt="复制代码">
inner(*args,**== func(*args,**=(,end_time-<span style="color: #008000">#<span style="color: #008000"> FBV版添加班级
<span style="color: #000000">@wrapper
<span style="color: #0000ff">def<span style="color: #000000"> add_class(request):
<span style="color: #0000ff">if request.method == <span style="color: #800000">"<span style="color: #800000">POST<span style="color: #800000">"<span style="color: #000000">:
class_name = request.POST.get(<span style="color: #800000">"<span style="color: #800000">class_name<span style="color: #800000">"<span style="color: #000000">)
models.Classes.objects.create(name=<span style="color: #000000">class_name)
<span style="color: #0000ff">return redirect(<span style="color: #800000">"<span style="color: #800000">/class_list/<span style="color: #800000">"<span style="color: #000000">)
<span style="color: #0000ff">return render(request,<span style="color: #800000">"<span style="color: #800000">add_class.html<span style="color: #800000">")
方法,如果需要批量对具体的请求处理方法,如get,post等做一些操作的时候,这里我们可以手动改写dispatch方法,这个dispatch方法就和在FBV上加装饰器的效果一样。
<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>
属性:
django将请求报文中的请求行、头部信息、内容主体封装成 HttpRequest 类中的属性。
除了特殊说明的之外,其他均为只读的。
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 且提交的