学习目标:
针对网页传输的内容进行视图函数的定义,完成特定的功能。学习内容:
1、 获取用户请求数据request.GET 获取数据
request.POST 提交数据
request.FILES 上传文件
2、 checkbox等多选的内容
request.POST.getlist()
3、 上传文件
上传文件form标签作特殊设置
enctype="multipart/form-data"
c = request.FILES.get("fl")
print(c,'\n',type(c),'\n',c.name)
file_path = os.path.join("upload",c.name)
f = open(file_path,mode="wb")
for tmp in c.chunks():
f.write(tmp)
f.close()
4、 FBV & VBV
function base view
url.py
index ---> 函数名
view.py
def function(request):
...
======>
/index/ ---> 函数名
/index/ ---> 类
======>
建议:两者都用
5、 装饰器
FBV:
def auth(func):
def test(request, *args, **kwargs):
login_info = request.COOKIES.get("login-name")
if not login_info:
return redirect("/login/")
return func(request)
return test
@auth
def index(request):
login_info = request.COOKIES.get("login-name")
return render(request, "index.html", {"login_name": login_info})
CBV:
@auth
def index(request):
login_info = request.COOKIES.get("login-name")
return render(request, "index.html", {"login_name": login_info})
from django import views
from django.utils.decorators import method_decorator
# 方法一
@method_decorator(auth,name="dispatch")
class Order(views.View):
# 方法二
# @method_decorator(auth)
# def dispatch(self, request, *args, **kwargs):
# return super(Order,self).dispatch(request, *args, **kwargs)
# 方法三
# @method_decorator(auth)
def get(self,request):
login_info = request.COOKIES.get("login-name")
return render(request, "index.html", {"login_name": login_info})
def post(self,request):
login_info = request.COOKIES.get("login-name")
return render(request, "index.html", {"login_name": login_info})
6、请求的其他信息
print(type(request))
from django.core.handlers.wsgi import WSGIRequest
# 封装了所有的用户请求信息
print(request.environ)
# 循环查看所有请求信息
for k,v in request.environ.items():
print(k, v)
# 通过key获取相关信息
print(request.environ['HTTP_USER_AGENT'])
7、补充
request.body
request.POST(request.body)
request.FILES(request.body)
request.GET
request.xxx.getlist
request.Meta(...)
request.method(POST,GET,PUT)
request.path_info
request.COOKIES
define request-head
response = HttpResponse("hello")
response["name"] = "Jim"