【问题标题】:How do you implement Django namespaces你如何实现 Django 命名空间
【发布时间】:2021-12-31 19:40:19
【问题描述】:

我已经开始了与 Django 的旅程,我非常喜欢它。我确实有一个关于命名空间的问题,我希望有人能够帮助我并解释它为什么会这样工作。

我知道命名空间用于确保如果您有两个同名的页面,则 url 和 reverse 函数指向正确的页面。我一直在尝试在我正在编写的测试应用程序中实现命名空间,但一直没能做到。

这是我到目前为止所拥有的(这是没有命名空间的,因为我无法让它工作。

从应用程序 urls.py 中提取

from django.urls import path, re_path
from . import views



urlpatterns = [

 path('', views.index, name = "index"),
]

项目 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')),
    path('index/', include('gallery.urls')),
]

最后,这是我的 app 文件夹中的 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")

任何帮助将不胜感激

【问题讨论】:

    标签: django namespaces


    【解决方案1】:

    URL 命名空间允许您唯一地反转命名的 URL 模式,即使不同的应用程序使用相同的 URL 名称。第三方应用程序始终使用命名空间 URL 是一种很好的做法(正如我们在教程中所做的那样)。同样,如果部署了应用程序的多个实例,它还允许您反转 URL。换句话说,由于单个应用程序的多个实例将共享命名 URL,命名空间提供了一种区分这些命名 URL 的方法。见URL namespaces

    在你的情况下:

    项目 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' %}
    

    【讨论】:

      猜你喜欢
      • 2010-12-27
      • 2010-09-19
      • 2010-09-12
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 2013-09-03
      • 2011-08-09
      • 1970-01-01
      相关资源
      最近更新 更多