【问题标题】:Provide the namespace argument to include() instead on django 3.0在 django 3.0 上为 include() 提供命名空间参数
【发布时间】:2020-04-23 23:55:54
【问题描述】:

在 Django 3.0 中,这给出了错误:

django.core.exceptions.ImproperlyConfigured: Passing a 3-tuple to include() is not supported. Pass a 2-tuple containing the list of patterns and app_name, and provide the namespace argument to include() instead.

我应该如何更改url(r'^admin/', include(admin.site.urls))?我试图查看文档,

from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^hello/', include(myapp.views)),
]

【问题讨论】:

  • 使用pathre_path,从django.urls导入。您查看了哪些文档?没有url了。

标签: django python-3.7


【解决方案1】:

从管理网址中删除包含并使用路径

from django.urls import path, include
urlpatterns = [
   path('admin/', admin.site.urls),
   path('hello/', include('myapp.views')),
]

参考这个django 3 doc.

【讨论】:

  • include()在哪里?
  • admin 相同,应该是include()
【解决方案2】:

问题出在include(myapp.views)

  • 首先您应该包含一个字符串 (include('myapp.views')),而不是实际的模块。这就是导致错误的原因。
  • 但第二,您不包括视图,而是包括其他 url 模式。因此,除非myapp.views 包含顶级urlpatterns,否则您也会收到错误消息。

最后,正如@c.grey 指出的那样,使用path(),而不是url()

【讨论】:

    猜你喜欢
    • 2018-07-07
    • 2018-12-03
    • 2019-02-13
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 2020-05-19
    • 1970-01-01
    相关资源
    最近更新 更多