Django urls路由與app子路由

前言

在網頁本身較少的情況下Django項目可以只使用單個app和項目自帶的urls文件進行路由,但是在網頁較爲複雜或項目內有多個app的情況下就不太合適了,這時就需要在app中單獨設置路由

環境

  • windows10
  • pycharm2017.3.3 professional edition
  • python3.6.4
  • django2.0.2

方法

爲方便表達,統一將項目同名文件下的urls.py文件稱爲主路由,項目app內的urls.py稱爲子路由

  1. 項目內單個app路由配置(主路由)方法。
    使用創建項目時的路由文件,即項目同名文件下的urls.py文件

    from django.contrib import admin
    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),  # Django後臺管理頁面
        path('xxx1/', views.xxx1, name="xxx2"),
        path('xxx2/', views.xxx1, name="xxx2"),
    ]

    這樣就形成的項目內的路由文件,其中“from . import views”是從項目的所有文件中尋找views文件並導入,在項目只有一個app的情況下自然是導入該app的views.py文件

  2. 多app情況下urls分離。
    其實即便不分離,使用1中的方法也是可以的,但是當網頁不斷豐富,app不斷增加的情況下,就會對後面的維護工作造成諸多不便
    首先,在app目錄下創建子路由urls.py文件(同名不要緊),並將原先主路由內該app下的網頁遷移過來

    from django.urls import path
    from app1 import views
    
    urlpatterns = [
        path('xxx1/', views.xxx1, name="xxx2"),
        path('xxx2/', views.xxx1, name="xxx2"),
    ]

    原主路由文件變成

    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', include('app1.urls')),
    ]

    不要忘了引入include,這樣就能成功分離路由文件,而網頁的訪問地址不會改變

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章