topwebmaster
@topwebmaster
Веб-программист, django, laravel, php, python

В django перестали работать все урлы после установки allauth, теперь все урлы только из allauth, как исправить?

Собственно вопрос в заголовке. Теперь не работают урлы других приложений, я так понимаю allauth переопределяет все роутеры? Как вернуть прежнее поведение django?

главный роутер:
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns


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

    #
    url(r'^grappelli/', include('grappelli.urls')), # grappelli URLS
    url(r'^admin/',  include(admin.site.urls)),
    url(r'^блог/', include('blog.urls')),
    url(r'^accounts/', include('allauth.urls')),
    url(r'^', include('portal.urls')),  #@TODO не работают все урлы кроме allauth

)+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)


urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
if settings.DEBUG:
    import debug_toolbar
    urlpatterns += patterns('',
        url(r'^__debug__/', include(debug_toolbar.urls)),
    )
  • Вопрос задан
  • 227 просмотров
Пригласить эксперта
Ответы на вопрос 1
Сравниваю ваш роутер с почти-таким-же на своём проекте (где тоже allauth и всё ок).
Мысли вслух, проверять лень.

0) Какие провайдеры для allauth используются? Есть ли среди них не входящие в стандартную поставку?
allauth.urls импортирует .urls из каждого подключенного провайдера, возможно какой-то из них написан с ошибкой.

1) Для работы кириллицы возможно следует указать кодировку если используется python 2.x
Ну, типа
# -*- coding: utf-8 -*-
в начале файла. Это что касается r'^блог/'

2) Какая у вас версия Django?
Вы случаем не перемудрили со статикой? По умолчанию при DEBUG=True в актуальных версиях Django статика обрабатывается для runserver автоматически и заносить её в urls не нужно. А при DEBUG=False её должен обрабатывать веб-сервер, а не Django-приложение.

Если у вас какой-то переопределнный runserver, который НЕ поддерживает статику, то действительно для неё нужен отдельный роут.
Но в этом случае строка
urlpatterns += staticfiles_urlpatterns()
аналогична строке
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
и нужно оставить какую-то одну (скорее всего первую).

3) проверьте чтобы все используемые в роутере приложения присутствовали в settings.INSTALLED_APPS
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы