我已经开始了 Django 之旅,我非常喜欢它。我确实有一个关于命名空间的问题,我希望有人能够帮助我并解释为什么它会这样工作。
我知道命名空间用于确保如果有两个同名页面,则 url 和反向函数指向正确的页面。我一直在尝试在我正在编写的测试应用程序中实现名称空间,但未能做到。
这是我到目前为止所拥有的(这没有命名空间,因为我无法让它工作。
从应用程序 urls.py 中提取
from django.urls import path, re_path
from . import views
urlpatterns = [
path('', views.index, name = "index"),
]
项目网址.py
from django.contrib import admin
from django.urls import path, include, re_path
import gallery
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include('django.contrib.auth.urls')),
path('index/', include('gallery.urls')),
]
最后,这是我的应用程序文件夹中的 view.py 文件
from django.shortcuts import render
from django.urls import reverse
# Create your views here.
def index(request):
return render(request,"gallery/index.html")
任何帮助将不胜感激
URL 命名空间允许您唯一地反转命名 URL 模式,即使不同的应用程序使用相同的 URL 名称也是如此。对于第三方应用程序来说,始终使用命名空间 URL 是一个很好的做法。同样,如果部署了应用程序的多个实例,它还允许您反转 URL。换句话说,由于单个应用程序的多个实例将共享命名 URL,因此命名空间提供了一种区分这些命名 URL 的方法。请参阅 URL 命名空间
您的情况:
项目urls.py
from django.contrib import admin
from django.urls import path, include, re_path
import gallery
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include('django.contrib.auth.urls', namespace='your-namespace')),
path('index/', include('gallery.urls',namespace='your-namespace')),
]
从应用程序 urls.py 中提取
from django.urls import path, re_path
from . import views
app_name = 'app'
urlpatterns = [
path('', views.index, name = "index"),
]
在模板中:
{% url 'app:index' %}