如果在应用程序的 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'),]
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')),]
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
]
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 命名空间。
