在不提供 app_name 的情况下在 include() 中指定名称空间

Specifying a namespace in include() without providing an app_name

models.py

from django.conf.urls import include, url

app_name = "Review"

urlpatterns = [
  url(r'^books/', include("Review.urls", namespace='reviews')),
]

Review\urls.py

from django.conf.urls import include, url
from django.contrib import admin
from .views import (
  ReviewUpdate,
  ReviewDelete,
)

urlpatterns = [
  url(r'^reviews/(?P<pk>\d+)/edit/$', ReviewUpdate.as_view(), name='review_update'),
  url(r'^reviews/(?P<pk>\d+)/delete/$', ReviewDelete.as_view(), name='review_delete'),
]

我在我的 urlpatterns 之前提供 app_name。但它在 运行 我的代码时给我错误。错误如下:

  File "E:\workspace\python\web\Book_Review_App\Book\urls.py", line 13, in <module>
    url(r'^books/', include("Review.urls", namespace='reviews')),
  File "E:\workspace\python\web\Book_Review_App\venv\lib\site-packages\django\urls\conf.py", line 39, in include
    'Specifying a namespace in include() without providing an app_name '
django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without providing an app_name is not supported. Set the app_name attribute in the included module, or pass a 2-tuple containing the list of patterns and app_name instead.

请帮忙。

app_name 需要在您的应用 urls.py 而不是主 urls.py 中设置。

审核中。urls.py添加以下内容,

from django.conf.urls import include, url 
from django.contrib import admin 
from .views import ( ReviewUpdate, ReviewDelete, )

app_name = 'Review'

urlpatterns = [ 
    url(r'^reviews/(?P<pk>\d+)/edit/$', ReviewUpdate.as_view(), name='review_update'),
    url(r'^reviews/(?P<pk>\d+)/delete/$', ReviewDelete.as_view(), name='review_delete'),
]

并从主网址中删除 app_name

编辑:对于管理员在评论中提到的问题, 主要 urls.py

from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]