Django基础(4:项目之URLs)

前面通过 Models 和 Admin 我们实现了对数据的创建和管理,就算是把数据库部分给准备好了

回到第一篇(https://blog.csdn.net/Jeeson_Z/article/details/82711620)给出的图(心中一定要时刻有这张图,编写过程才不会迷路)

   

客户端发来的请求先经过 WSGI ,但 Django 已经为我们准备好了 WSGI,就在 mysite/wsgi.py 文件里,所以我们可以不管他,下一步中我们发现 WSGI 又发给了 URLs,URLs 再转到 Views,本篇就来介绍和编写 URLs 路由系统

1. 路由干什么的?

    URLs 得到浏览器请求的 url 后,对照路由表,然后分配到子路由或者转到功能函数,可以认为它是个导航系统

2.  总路由 mysite/urls.py

     路由信息保存在 urls.py 文件里面,项目名字下的叫总路由,所有的 url 都先发到这里来做对照,在分发给对应的子路由,也就是每个应用的路由,在我们的项目中,总路由就是 mysite/urls.py,子路由就应该是 polls/urls.py,这个文件我们待会儿手动创建,现在先看总路由 mysite/urls.py

      打开 mysite/urls.py

      (1)里面默认有代码 path('admin/', admin.site.urls),这就是为什么我们能用  http://127.0.0.1:8000/admin/ 访问管理员页面,因为这里匹配了 admin 这个url,顺便补充一下: http://127.0.0.1:8000 是本机 IP 地址和端口,我们的服务器就运行在上面

      (2)在路由表 urlpatterns 里添加 url 及 对应分发的子路由文件的代码,代码中的 path() 用于匹配路由 include() 用来分发个子路由,参数是子路由的文件名,这个参数文件 ‘polls.urls’ 我们等下就创建,通过此行代码,我们就成功的把 url 里匹配到 'polls' 的 url 分发到 polls 应用的路由

"""mysite URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
# 导入include来分发路由
from django.urls import include

# urlpatterns就是路由表
urlpatterns = [
    # path()用于匹配路由
    # include()用来分发个子路由,参数是子路由的文件名
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

3. 子路由 polls.urls.py

      子路由的功能和总路由有所不同:总路由只负责把 url 分发给对应的子路由,而子路由直接根据 url 绑定 Views 里对应的业务功能

    (1)创建 polls.urls.py

    (2)用 app_name = 'polls'  来设置命名空间,避免和其他应用的同名 url 混淆

    (3)编写路由表:path()负责绑定业务功能

                                 第一个参数是url,url里的参数用'< >'包裹

                                 第二个参数是绑定的业务功能,xxx.as_view()把xxx类作为业务功能 ,这里先写着,不管,下一篇介绍

                                 第三个参数代表该条url的名字

# 自建的路由文件
# 导入path来匹配url
from django.urls import path
# 导入当前目录下的views
from . import views


# 确定命名空间
app_name = 'polls'
# 子路由表
urlpatterns = [
    # path()负责绑定业务功能
    # 第一个参数是url,url里的参数用'< >'包裹
    # 第二个参数是绑定的业务功能,xxx.as_view()把xxx类作为业务功能
    # 第三个参数代表该条url的名字
    path('', views.IndexView.as_view(), name='index'),
    path('<int:pk>/', views.DetailView.as_view(), name='detail'),
    path('<int:pk>/results/', views.ResultsView.as_view(), name='results'),
    path('<int:question_id>/vote/', views.vote, name='vote'),
]

总的来说,路由就是指导 url 要用哪个功能而已,这样,路由系统就算完成了,但我们留了Views的坑,下篇就介绍 Views

猜你喜欢

转载自blog.csdn.net/Jeeson_Z/article/details/82717233