Django не включает urls.py из установленного приложения - PullRequest
2 голосов
/ 02 июля 2011

Я получаю ошибку ниже:

Caught NoReverseMatch while rendering: Reverse for 'satchless-checkout-prepare-order' with arguments '()' and keyword arguments '{}' not found.

Но у меня есть satchless.contrib.checkout.common в моих установленных приложениях. В пределах satchless.contrib.checkout.common находится urls.py, который содержит:

from django.conf.urls.defaults import patterns, url

from .views import confirmation, prepare_order, reactivate_order

urlpatterns = patterns('',
    url(r'^prepare/$', prepare_order, {'typ': 'satchless_cart'},
        name='satchless-checkout-prepare-order'),
    url(r'^(?P<order_token>\w+)/confirmation/$', confirmation,
        name='satchless-checkout-confirmation'),
    url(r'^(?P<order_token>\w+)/reactivate/$', reactivate_order,
        name='satchless-checkout-reactivate-order'),
)

Почему я не могу позвонить {% url satchless-checkout-prepare-order %} из моего шаблона?

Ответы [ 2 ]

3 голосов
/ 02 июля 2011

Вы включили его из корневого urlconf?

Что-то вроде этого в вашем основном файле urls.py:

url(r'^foo/' include('satchless.urls')),
2 голосов
/ 10 июля 2011

Вам не нужно включать satchless.contrib.checkout.common в свои INSTALLED_APPS. Это на самом деле не приложение, а пакет python, который содержит общие представления / декораторы для многоэтапных и одноэтапных приложений для проверки.

Если вы загляните в satchless / contrib / checkout / multistep / urls.py или satchless / contrib / checkout / singlestep / urls.py, вы увидите, что оба они включают шаблоны из common / urls.py:


from ..common.urls import urlpatterns

urlpatterns = urlpatterns + patterns('',
...

Что вам нужно сделать, это выбрать метод оформления заказа (скажем, многошаговый), добавить его в INSTALLED_APPS и включить соответствующие URL:


settings.py:

INSTALLED_APPS = (
...
    'satchless.contrib.checkout.multistep',
...
)


urls.py:

urlpatterns = patterns(
...
    url('^checkout/', 'satchless.contrib.checkout.multistep.urls')
...
)
...