【问题标题】:urls error in django 1.11.x upgrade to 2.0django 1.11.x 升级到 2.0 中的 urls 错误
【发布时间】:2018-06-12 13:33:41
【问题描述】:

我正在将我的项目从 django 1.11.x 迁移到 2.0。在我找到网址之前,我一切都进展顺利。我碰巧有这样的导入

from cashondelivery.dashboard.app import application as cod_app

我的 url 模式为

url(r'^dashboard/cod/', include(cod_app.urls)),

但我的终端出现以下错误

url(r'^dashboard/cod/', include(cod_app.urls)),
  File ".../dev/lib/python3.6/site-packages/django/urls/conf.py", line 27, in include
    'provide the namespace argument to include() instead.' % len(arg)
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.

我真的很感激修复。

现金交付->仪表板->应用程序

import django
from django.conf.urls import url
from django.contrib.admin.views.decorators import staff_member_required

from oscar.core.application import Application

from . import views


class CashOnDeliveryDashboardApplication(Application):
    name = None
    default_permissions = ['is_staff', ]

    list_view = views.TransactionListView
    detail_view = views.TransactionDetailView

    def get_urls(self):
        urlpatterns = [
            url(r'^transactions/$', self.list_view.as_view(),
                name='cashondelivery-transaction-list'),
            url(r'^transactions/(?P<pk>\d+)/$', self.detail_view.as_view(),
                name='cashondelivery-transaction-detail'),
        ]

        if django.VERSION[:2] < (1, 8):
            from django.conf.urls import patterns

            urlpatterns = patterns('', *urlpatterns)

        return self.post_process_urls(urlpatterns)


application = CashOnDeliveryDashboardApplication() 

【问题讨论】:

  • 你能贴出 cod_app.urls 的代码吗?
  • 我有更新的请求
  • 如果您从 Django 1.11 升级到 Django 2.0,您可以通过删除 if django.VERSION[:2] &lt; (1, 8): 块来简化代码。
  • 我遇到了同样的错误

标签: python django django-oscar


【解决方案1】:

您需要删除include() 并直接传递urls

url(r'^dashboard/cod/', cod_app.urls),

在 Django 2 中删除了 urls 属性 returns a 3-tuple,而不是 urlpatterns 的列表,并且支持将其传递给 include()

【讨论】:

  • 感谢修复它。我一直在尝试从 GitHub 上与您联系,但我无法获得。您有可以轻松聊天的社交媒体帐户吗?
【解决方案2】:

django2 中,其path 用于普通网址,re_path 用于使用正则表达式的网址。

path('dashboard/cod/', include(cod_app.urls)),

【讨论】:

    猜你喜欢
    • 2020-08-25
    • 1970-01-01
    • 2019-04-13
    • 2018-11-03
    • 2019-03-05
    • 1970-01-01
    • 2018-08-20
    • 2017-07-23
    相关资源
    最近更新 更多