Ошибка URL в обновлении django 1.11.x до 2.0 - PullRequest
0 голосов
/ 12 июня 2018

Я переношу свой проект с django 1.11.x на 2.0.У меня все идет хорошо, пока я не добрался до URL.У меня случается импорт, подобный этому

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.

Я был бы очень признателен за исправление.

cashondelivery-> панель инструментов-> приложение

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() 

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Вам нужно отбросить include() и просто передать urls напрямую:

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

Свойство urls возвращает 3-кортеж , а не списокurlpatterns, и поддержка для передачи этого в include() была прекращена в Django 2.

0 голосов
/ 12 июня 2018

В django2 path для обычного URL и re_path для URL с использованием регулярного выражения.

path('dashboard/cod/', include(cod_app.urls)),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...