一、主路由与分布式路由匹配视图函数views
1、主路由匹配视图函数views
- 在主目录下urls.py
urlpatterns = [
path('page/2021', views.page_2021),
]
2、分布式匹配视图函数views
- 首先我们创建一个新的文件app,项目目录下终端输入下面命令
python3 manage.py startapp user
-
然后主项目目录下会多一个user文件夹
image.png 立刻去settings.py配置文件INSTALLED_APPS下增加自己创建的app名称,记住每次创建一个要立马在这里增加一下app名称
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'user', # 这个是我新增的
]
- 在主目录下urls.py写分布式路由匹配
from django.urls import path, include
urlpatterns = [
path('users/', include('user.urls'))
]
- 然后在user文件下创建urls.py文件,并且写分布式路由匹配
from django.urls import path
from . import views
urlpatterns = [
# 127.0.0.1:8000/users/login
path('login', views.login),
]
二、视图函数处理与视图类的处理
1、基于视图函数的处理方式 FBV(function base view)
- 同一个url,使用一个视图函数去处理多个类型请求。由于我们对代码的要求,一个函数处理一件事情,FBV不太合理,处理这种情况。
from django.http import HttpResponse
def login(request):
if request.method == "GET":
return HttpResponse("hello GET")
elif request.method == "POST":
return HttpResponse("hello POST")
elif request.method == "PUT":
return HttpResponse("hello PUT")
2、基于视图类的处理方式 CBV(class base view)
- 可以让 url 对应一个视图类,不同的请求方法,对应视图类中的方法。只不过,视
图类中的方法用请求方法的小写来表示,而且要严格一致。 - 视图类继承自Django的视图类 from django.views import View 当接收到视图类中没
有定义的方法时,视图类会返回给浏览器一个405响应
from django.views import View
class UsersView(View):
def get(self, request):
return HttpResponse("hello get")
def post(self, request):
return HttpResponse("hello post")
def put(self, request):
return HttpResponse("hello put")
def delete(self, request):
return HttpResponse("hello delete")