一、HttpRequest对象
HttpRequest对象:
服务器接收到http协议的请求后,会根据报文创建HttpRequest对象视图函数的第一个参数是HttpRequest对象在django.http模块中定义了HttpRequest对象的API

get_post\views.py
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
print(request) #<WSGIRequest: GET '/get_post/index/'>
print(request.path) #/get_post/index/
print(request.method) #GET
print(request.encoding) #None
return HttpResponse('访问成功')

二、GET和POST请求
1.form标签中的GET和POST
在HTML中,form表单的作用是收集标签中的内容,
中间可以由访问者添加类似于文本,选择,或者一些控制模块等等.然后这些内容将会被送到服务端。
一个表单必须指定两样东西:
- form的method参数用于设置表单的提交方式,默认使用POST.
- action用于设置表单的提交url,如果不写或者保持空字符串,那么将使用当前的URL.
form表单使用get方式提交的例子
get_post.html<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body>
<form method="get" action="{% url 'get_test' %}">{% csrf_token %}
用户名: <input type="text" placeholder="请输入用户名" name="user"><br>
密 码:<input type="text" placeholder="请输入密码" name="pwd"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
ger_post\views.py
```python
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
print(request) #<WSGIRequest: GET '/get_post/index/'>
print(request.path) #/get_post/index/
print(request.method) #GET
print(request.encoding) #None
return render(request, 'get_post/get_post.html')
def get_test(request):
print(request.method)
username = request.GET.get('user')
password = request.GET.get('pwd')
print(username)
print(password)
return HttpResponse('操作完毕')

form表单使用post方式提交的例子
get_post.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post" action="{% url 'post_test' %}">{% csrf_token %}
用户名: <input type="text" placeholder="请输入用户名" name="user"><br>
密 码:<input type="text" placeholder="请输入密码" name="pwd"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
ger_post\views.py
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
print(request) #<WSGIRequest: GET '/get_post/index/'>
print(request.path) #/get_post/index/
print(request.method) #GET
print(request.encoding) #None
return render(request, 'get_post/get_post.html')
def post_test(request):
print(request.method)
username = request.POST.get('user')
password = request.POST.get('pwd')
print(username)
print(password)
return HttpResponse('操作完毕')

一键多值的getlist方法

2.GET和POST对比


三、类视图
View类视图以请求方式为类方法.
在对应的方式下面编写对应的逻辑函数.


四、文件上传
Django在处理文件上传的时候,文件数据被保存在了request.FILES
FILES中的每个键为中的name
设置文件的存储路径
1.在项目根目录下static中创建media文件夹
2.图片上传后,会被保存到“/static/media/文件”
3.打开settings.py文件,增加media_root项

文件上传form表单中
FILES只有在请求的方法为POST 且提交的