2014-03-27 4 views
0

Я пытаюсь соединить свои URL'ы вместе, после установки django-registration appДжанго: Возникают проблемы с гнездовых URLS

Мой главный проект называется клуб, здесь клуб/клуб/urls.py:

from django.conf.urls import patterns, include, url 
from blog import views 
# Uncomment the next two lines to enable the admin: 
from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    # Examples: 
    # url(r'^$', 'club.views.home', name='home'), 
    # url(r'^club/', include('club.foo.urls')), 

    # Uncomment the admin/doc line below to enable admin documentation: 
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), 

    # Uncomment the next line to enable the admin: 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^addauthor$', views.addauthorView), 
    url(r'^thanks/$', views.thanksView), 
    url(r'^displayauthors/$', views.displayauthors), 
    # registration links below 
    url(r'^reg/', include('club.registration.urls')), 

) 

А вот мой клуб/регистрация/urls.py:

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

urlpatterns = patterns('', 
url(r'^accounts/', include('registration.backends.default.urls')), 
) 

Am I соедините g эти два правильно? Или есть другой способ сделать это?

При попытке посетить http://127.0.0.1:8000/reg/accounts/login/ в браузере я получаю сообщение об ошибке:

ImportError at /reg/accounts/login/ 
No module named registration.urls 

ответ

2

Есть причина, у вас есть «регистрации» приложение (т.е. клуб/регистрация/URL)? Не пытаться быть рывком; честно интересно. Есть основания для этого, но если вы не вносите больших изменений, возможно, просто будет легко связать прямо из корневого URL-адреса.

Если вы хотите использовать только Джанго-регистрация приложение оптом, ваш корневой URL конф (клуб/клуб/urls.py) мог сказать:

url(r'^reg/', include('registration.backends.default.urls')),. Обратите внимание, что вы можете изменить r'^reg/' на все, что захотите. Чтобы перейти к нему, вы должны перейти к http://127.0.0.1:8000/reg/login

Если у вас есть причина для приложения «регистрации» (что означает, что у вас есть отдельный каталог «club/registration /»), это тоже хорошо. Вы просто не нужен «клуб» в вашем включить ссылку на корневой URL-адрес конф (клуб/клуб/urls.py):

url(r'^reg/', include('registration.urls')),

Тогда исходная ссылка должна работать: http://127.0.0.1:8000/reg/accounts/login/

+0

_Is есть причина, по которой у вас есть приложение «регистрации» (например, клуб/регистрация/url)? _ Ну, я подумал, что в конечном итоге у меня появятся взгляды на мою регистрацию, а хранение всех частей регистрации в одной папке просто показалось бы хорошая идея. Разве это не хороший подход к написанию многоразового кода? – ApathyBear

+0

Взято из django-registration: _ Два вида предоставлены: registration.backends.default.views.RegistrationView и registration.backends.default.views.ActivationView. Эти подклассы подкласса django-регистрации основаны на RegistrationView и ActivationView, соответственно, и реализуют двухэтапный процесс регистрации/активации. Кажется, что папка была необходима, но я полагаю, что сами URL не обязательно должны быть. На самом деле, я бы хотел, чтобы все мои приложения, установленные в приложении, имели папку, что делает ее более понятной. * shrug * – ApathyBear

+0

Вам не нужна папка в вашем проекте. Он будет искать ваш проект, а затем пакет регистрации django. В принципе, вы заимствуете приложение, настроенное django-registration.It действительно зависит от пакета и ваших потребностей. Как вы показали, django-registration имеет некоторые представления. Он также имеет URL-адрес URL по умолчанию, с которым вы связаны ('registration.backends.default.urls'). Это означает, что вы соглашаетесь с этими URL-адресами и мнениями, которые они называют. Похоже, django-registration по-прежнему требует, чтобы вы создали свои собственные шаблоны. См. Инструкции по быстрому старту - «Требуемые шаблоны» – Alex