我是編碼新手,如果這是一個愚蠢的問題,請原諒,但我在任何地方都找不到明確的答案。所以我有一個 django 專案,里面有兩個應用程式,它們都有根'/',使用 return redirect('/') 讓 django 區分不同應用程式中的這兩個根的確切格式和實作是什么使用命名路由。一步一步的指南將不勝感激,在此先感謝您。
uj5u.com熱心網友回復:
例如,您有一個名為InitialProject的 django 專案,該專案內部有 2 個應用程式,我們稱它們為MyApp1和MyApp2。
您的目錄結構應如下所示:
PythonProject/
├─ InitialProject/
│ ├─ __init__.py
│ ├─ asgi.py
│ ├─ settings.py
│ ├─ urls.py
│ ├─ wsgi.py
├─ MyApp1/
│ ├─ migrations/
│ ├─ filters.py
│ ├─ tests.py
│ ├─ urls.py
│ ├─ views.py
│ ├─ models.py
│ ├─ __init__.py
│ ├─ admin.py
│ ├─ apps.py
├─ MyApp2/
│ ├─ migrations/
│ ├─ filters.py
│ ├─ tests.py
│ ├─ urls.py
│ ├─ views.py
│ ├─ models.py
│ ├─ admin.py
│ ├─ __init__.py
│ ├─ apps.py
首先,URL 是唯一的,即在這種情況下,1 個 URL 只能指向一個路徑或一個視圖功能。但是我們可以做的是,我們可以說以“APP1”開頭的 URL應該查看 MyApp1/ urls.py的函式,而以“APP2”開頭的 URL應該查看MyApp2/urls.py
所以在InitialProject/urls.py中,我們定義如下:
from django.urls import path
from django.urls.conf import include
urlpatterns = [
path('APP1/', include('MyApp1.urls')), # Note the trailing forward slash, it is important
path('APP2/', include('MyApp2.urls')),
]
因此,它的作用是:如果您的 URL 是:HTTP://localhost/APP1/,它將告訴 Django 查看 MyApp1/urls.py 以決議并獲取函式,對于 APP2 也是如此。
現在在 MyApp1/urls.py 我們可以做的是:
from . import views
from django.urls import path
urlpatterns = [
path('', views.my_function_1), # This URL will resolve as HTTP://localhost/APP1/
path('second_url', views.my_function_2), # This URL will resolve as HTTP://localhost/APP1/second_url
]
同樣可以為MyApp2完成。通過這種方法,您的 URL 結構更清晰,也很容易導航和查看正在呼叫的應用程式。
我希望您能夠理解 URL 模式的作業原理。
您可能會問我們為什么要在InitialProject/urls.py中定義初始 URL 模式?因為默認情況下,Django 會首先進入專案目錄查看哪些 URL 模式,并且只有從那里我們才能鏈接其他 App 的 URL 模式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/429436.html
標籤:Python django 重定向 路线 django 网址
