Skip to main content
 首页 » 编程设计

python之在 include 中使用命名空间有什么意义 ( Django 2.0)

2024年09月07日38leader

如果在应用程序的 url 中添加 app_name 实际上让我使用“app:view”语法,那么在 include 中使用命名空间有什么意义。

Blog_app/urls.py
from django.urls import path 
    from django.views.generic.base import RedirectView 
    from . import views 
 
    app_name = 'posts'  #APP_NAME 
 
    urlpatterns = [ 
           path('',RedirectView.as_view(url='posts/'), name='home'), 
           path('posts/',views.post_list, name='list'), 
           path('posts/detail/<int:pk>',views.post_detail, name='detail'), 
           path('posts/delete',views.post_delete, name='delete'), 
           path('posts/create',views.post_create, name='create'), 
           path('posts/update',views.post_update, name='update'),] 

项目/urls.py
from django.contrib import admin 
from django.urls import path,include 
 
urlpatterns = [ 
    path('admin/', admin.site.urls), 
    path('', include('blog_app.urls',namespace='posts')),] 

此代码可用于将 url 反转为这样的帖子/详细信息

example.html

<a href="{% url 'posts:list' %}"> Example <a/> 

但如果删除命名空间,它仍然会将我的 url 反转为 posts/detail

项目/urls.py
from django.contrib import admin 
from django.urls import path,include 
 
urlpatterns = [ 
    path('admin/', admin.site.urls), 
    path('', include('blog_app.urls')), #NAMESPACE DELETED 
 
] 

请您参考如下方法:

Blog_app/urls.py 中的应用名称 app_name = 'posts' 用作 url 命名空间。如果你删除它,你会得到一个命名空间错误。您可以在 include 中分配另一个命名空间,两者都可以用作 url 命名空间。