1.获取表单数据
步骤:
- 创建类视图
from django.views import View
class FromDataView(View):
# 注意:获取的数表单数据所以用POST
def post(self,request):
name = request.POST.get('name')
age = request.POST.get('age')
return HttpResponse('{}---{}',format(name,age))
- 注册视图
urlpatterns = [
# 注册视图,获取表单数据
re_path(r"^FromData/$",views.FromDataView.as_view())
]
- 交互postman获取数据
2.获取json数据
步骤:
- 创建类视图
class JsonDataView(View):
# 获取json数据
def post(self,request):
# 获取原始body数据
json_body = request.body
# 把数据转换为字典,这样后面就可以直接get获取了
json_dict = json.loads(json_body)
# 用get直接获取数据
name = json_dict.get('name')
age = json_dict.get('age')
- 注册视图
urlpatterns = [
# 注册视图,获取json数据
re_path(r'^JsonData/$',views.JsonDataView.as_view())
]
- postman 测试
3.提取路径数据
使用path的时候,用路由转换器
步骤:
- 创建视图
class UrlPathDataView(View):
# 获取url路径里的数据信息
def get(self,request,age1):
return HttpReponse('{}'.format(age1))
- 注册视图
注意:注册时使用转换器里的变量名要和视图函数里获取数据的变量名一致
urlpatterns = [
# 注册时使用注册器int
path('urlData/<int:age1>/',views.UrlPathDataView.as_view()),
]
- postman测试
4.自定义转换器
步骤:
- 在工程目录下创建converters.py
- 在converters.py文件里写自定义的转换器
class MobileConverters:
# 匹配手机号的转换器
regex = '1[3-9]\d{9}'
def to_python(self,value):
return int(value)
def to_utl(self,value):
return str(value)
- 在工程里的urls.py里把转换器注册
- 注册视图
urlpatterns = [
# 使用自定义转换器
re_path(r'^mobiledata/(?P<phone_num>1[3-9]\d{9})/$',views.MobileDataView.as_view())
]
- postman测试
5.获取请求头信息和其他信息
步骤:
- 创建视图,获取请求信息和其他信息
class HeadDataView(View):
def get(self,request):
# 获取信息类型
type = request.META.get('CONTENT_TYPE')
# 获取Cookie
cookie = request.COOKIES
# 获取上传的文件信息
file = request.FILES
# 获取路径
path = request.path
# 获取请求方式
method = request.method
# 获取用户信息
user = request.user
print(type,cookie,file,path,method,user)
return HttpResponse('成功')
- 注册视图
urlpatterns = [
# 获取请求头数据
re_path(r'^Hdata/$',views.HeadDataView.as_view())
]
- 控制台测试
6.json响应格式
步骤:
- 创建一个子应用,完成配置信息
命令:python manage.py startapp 子应用名称
1.注册安装子应用,添加到工程目录里的setting文件中的INSTALLED_APPS列表里:'responseapp.apps.ResponseappConfig';
2.再将子应用的路由添加到总路由文件中
urlpatterns = [
path('resapp/',include('responseapp.urls'))
]
- 在子应用里创建视图
class TestResponse(View):
def get(self,request):
res = Httpreponse('qwer',status=200)
return res
def post(self,request):
data_dcit = {
'name':'xiaoming',
'age':20
}
jres = JsonResponse(data_dict)
return jres
- 注册视图
urlpatterns = [
path('rdata/',views.TestResponse.as_view()),
]
- postman测试
7.重定向
步骤:
- 创建视图
class IndexView(view):
# 主页视图
def get(self,request):
return HttpReponse('这里是主页')
class LoginVIew(View):
# 登录视图
def post(self,request):
return redirect('/resapp/index')
- 注册路由
urlpatterns = [
# 主页
path('index/',views.IndexView.as_view()),
# 登录逻辑
path('login/',views.LoginVIew.as_view()),
]
- postman测试