我只把相关常用的东西写下来。其他的,常用了我会补充。
from django.shortcuts import render
from django.views.decorators.http import require_http_methods
@require_http_methods([‘GET‘,‘POST‘])
def index(request):
return render(request, ‘index.html‘, locals())
Copy
限制请求方式
限制只能为get请求
限制只能为post请求
限制只能为get或者head请求
除非另有说明,否则,request的属性都是只读属性。
获得当前路径的完整相对路径。
获得当前路径的相对路径,不包括服务器提供的路径。不包括get请求的相关参数。
返回http或者https。
返回‘GET‘或者‘POST‘,主要用于请求判断是GET或者POST。
类字典对象,主要用于获得url链中的参数。
类字典对象,主要获得表单中的参数。
cookie的字典,键值是字符串。关于cookies的使用如下:
response = HTTPResponse("hello world!")
response.set_cookie(key, value, [max_age=60), expires=datetime)] # max_age和expires二选一,前者规定失效需要经过的时间,数字以秒为单位,后者规定cookie失效的日期。
request.COOKIES.get(key) # 提取相关值,如果没有,返回None
request.delete_cookie(key)
Copy
类字典,获得表单中提交的文件。键是name的值。用法如下:
<!--html-->
<form action=‘upload‘ method=‘post‘ enctype="multipart/form-data"> <!-- 从源码上来看要使用这个,否则会返回一个空字典 -->
<input type="file" name="upload_file">
<input type="submit">
</form>
Copy
# python
from django.http import HttpResponse
def upload(request):
if request.method == ‘POST‘:
with open(filename, ‘wb‘) as f:
for chunk in request.FILES["file"].chunks():
f.write(chunk)
return HttpResponse(‘上传OK‘)
Copy
类字典。其中我认为有三个键比较常用。可以提出来使用。HTTP_USER_AGENT,获得请求头。REMOTE_ADDR获得客户端的IP地址。REMOTE_HOST客户端的主机名。HTTP_REFERER 获得来源的url链接,referer来英文中的意思是介绍人的意思,简单的说,当你从某个界面点击一个链接进入另一个界面,那么这个某个界面就是另一个界面的referer。
当前会话,可读可写。类似于字典对象。
常用于验证用户是否登录。如果用户在登录状态,request.user.authenticated会返回true。
request.get_host() # 返回域名
request.get_full_path() # 返回完整路径
request.get_raw_uri() # 返回uri
request.is_secure() # 是否是https形式
request.is_ajax() #是否是ajax请求,原理在请求头中X-Request-With:XMLHttpRequest
Copy
类似于request.GET和request.POST都属于QueryDict对象,获取单一对象用get方法,返回一个字符串。若是复选框有多个对象用getlist方法,返回一个列表。
JsonResponse, HttpRequest, HttpResponse, StreamingHttpResponse, FileResponse, Http404,HttpResponseRedirect
reverse, resolve前有"/"后没有,否则会报错。
render, redirect, get_object_or_404, get_list_or_404
用于惰性渲染。
from django.template.response import TemplateResponse
def blog_index(request):
return TemplateResponse(request, ‘entry_list.html‘, {‘entries‘: Entry.objects.all()})
Copy
path, re_path, include, register_converter
static, url, handler400, handler403, handler404, hander500
其中handler400, handler404, handler403在request参数后加上了一个exception。
# urls.py
from django.conf.urls import handler404
from blog import views
handler404 = views.page_not_found
# views.py
from django.http import HttpResponse
def page_not_found(request, exception):
return HttpResponse("找不到页面")
# settings.py
DEBUG = False
ALLOW_HOSTS = [‘*‘]
Copy
注意:要放到主urls.py文件中!!!
原文:https://www.cnblogs.com/catfish1921/p/13739396.html