如何在 Django 中包含其他 URL 模式?
在 Django 中,我们可以使用 include() 函数来包含其他 URL 模式,包含的模式可以来自于同一个应用程序中的 urls.py 文件,也可以来自于其他应用程序中的 urls.py 文件。
假设我们有一个名为 myapp 的应用程序,它有两个视图函数 views.foo 和 views.bar,我们可以在 myapp 的 urls.py 文件中定义这两个视图函数的 URL 模式:
from django.urls import path from . import views urlpatterns = [ path('foo/', views.foo, name='foo'), path('bar/', views.bar, name='bar'), ]
现在我们想在项目的主 urls.py 文件中包含 myapp 的 URL 模式,我们可以使用 include() 函数:
from django.urls import include, path urlpatterns = [ path('myapp/', include('myapp.urls')), ]
在这个例子中,我们将 myapp 的 URL 模式包含在了 '/myapp/' 路径下,这意味着访问 '/myapp/foo/' 将会显示 views.foo 函数的内容。
需要注意的是,include() 函数的第一个参数应该是一个字符串,指定需要包含的 URL 模式所在的文件(通常是一个应用程序的 urls.py 文件)的路径。我们也可以使用命名空间来避免不同应用程序之间的 URL 名称冲突。
例如,我们可以将 myapp 的 URL 模式包含在一个名为 'myapp_urls' 的命名空间下:
from django.urls import include, path urlpatterns = [ path('myapp/', include(('myapp.urls', 'myapp'), namespace='myapp_urls')), ]
这样,我们可以在其他应用程序中使用 'myapp:foo' 和 'myapp:bar' 来引用 myapp 中的视图函数。例如,在一个名为 otherapp 的应用程序中,我们可以这样定义一个模板中的链接:
<a href="{% url 'myapp:foo' %}">Link to foo</a>
这会生成链接 '/myapp/foo/',并调用 myapp 中的 views.foo 函数。
相关文章