**
@类视图、路由、请求。(2020/8/7)
1.定义一个类视图
#类视图的优点是提高代码的复用性,可读性更高
#创建一个登陆注册界面类
from django import http
from django.views import View
#Register中的View 会继承View父类中的所有方法
class Register(View):
#定义一个接受get方式的请求函数。!注意get 一定要全部写小写
#request 是视图里面固定的一个参数 没有具体写法的要求 最好用request
def get(self, request):
#return 响应对象,构造响应报文,并返回给客户端
return http.HttpResponse('这是一个get请求')
#定义一个接受post方式的请求函数。!注意post 一定要全部写小写
def post(self, request):
return http.Http.Response('这是一个post请求')
#定义路由
from django.urls import path, repath
from . import Views
#路由是一个列表.
urlpatterns = [
#书写路由的方式是 path('网址访问的路径', 'views.类视图名.as_view()')
path('register/', views.Register.as_view()),
]
# 欢迎使用Markdown编辑器**加粗样式**
你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
```python
2.类视图获取访问的参数
#测试地址
http://127.0.0.1:8000/test/register/?name=zs&age=18
1.定义一个类视图
#创建一个登陆注册界面类
from django import http
from django.views import View
#Register中的View 会继承View父类中的所有方法
class Parameter_Register(View):
#定义一个接受get方式的请求函数。!注意get 一定要全部写小写
#request 是视图里面固定的一个参数 没有具体写法的要求 最好用request
#:param request 请求信息 包含了请求报文
def get(self, request):
#request.GET.get()方法是django里面获取键值的方法,获取到的是值。
name = request.GET.get('name')
age = request.GET.get('age')
return http.HttpResponse('这是一个get请求')
#定义一个接受post方式的请求函数。!注意post 一定要全部写小写
def post(self, request):
name = request.GET.get('name')
age = request.GET.get('age')
return http.Http.Response('这是一个post请求')
#创建路由
from django.urls import path, re_path
from . import Views
urlpatterns = [
#path方法写出的路由
path('test/register', Views.Parameter_Register.as_view()),
#re_path方法写路由
#re_path路由内写的地址要义 正则表达式 来书写,原因是path方法中已经将正则方法封装好了
#正则的写法是 r"^路径地址$" 以开头^和以结尾$都要写进去。
#后续和path方法一样
#正则表达式的书写方法要按照 r'^xxxx$'这个要求,不然会出现路由屏蔽。
re_path(r'^test/register/$',Views.Parameter_Register.as_view()),
]
3.类视图获取请求json格式的数据
#测试地址
http://127.0.0.1:8000/json_data/
#测试用 json 数据
{
"name":"zhangsan",
"age":"18"
}
#1.定义类视图
from django import http
from django.views import View
#需要导入json模块解析json文件
import json
class Json_info(View):
def get(self, request):
#request请求或许body内容
json_data = request.body
#json.loads()解析获取到的json_data的json文件,获取到的内容是一个字典
json_dict = json.loads(json_data)
#get 方法会获取json_dict内的value值
name = json_dict.get('name')
age = json_dict.get('age')
print(name, age)
return http.Http.Response('这是一个get请求')
def post(self, request):
#request请求或许body内容
json_data = request.body
#json.loads()解析获取到的json_data的json文件,获取到的内容是一个字典
json_dict = json.loads(json_data)
#get 方法会获取json_dict内的value值
name = json_dict.get('name')
age = json_dict.get('age')
print(name, age)
return http.Http.Response('这是一个post请求')
4.路由
form django.urls import path, include, re_path
from django.contrib import admin
#django中的路由是在创建的总程序所包含的ursls里面
1.创建一个程序
#django-admin startproject -->文件名
django-admin startprojet Django_base_t
#总路由
urlpatterns = [
path('admin/', admin.site.urls),
#include方法会将子程序里面的所有子路由注册进去
path('', include(users.urls))
]
#主程序里面的urls是总路由
2.创建一个子程序
#django-admin startapp -->文件名
dajango-admin startapp users
#创建子程序 需要在总路由里面 注册子路由
#子路由
urlpatterns = [
#书写路由的方式是 path('网址访问的路径', 'views.类视图名.as_view()')
path('register/', views.Register.as_view()),
]
总结:类视图可以提供代码的复用性和可读性。请求request会携带一些参数,这些传参包含四种方式:查询字符串数据、请求体数据、URL地址中特定部分的数据、请求头数据。