Я новичок в stackoverflow и django ...
Краткий вопрос (см. «Длинный вопрос» ниже), следующий код в myapps / views.py завершился неудачно:
from django.core.urlresolvers import reverse
...
@login_required(login_url=reverse('django.contrib.auth.views.login'))
def my_view(request):
pass
Ошибка это:
ViewDoesNotExist at /
tried my-view2 in module myproject.myapps.views. Error was: 'module' object has no attribute 'my-view2'
'my-view2' определяется в myapps / views.py после my-view (и упоминается в myproject / urls.py)
Думаю, здесь есть что-то вроде курицы и яйца, но я могу ' Я не понимаю, в чем я ошибаюсь. Я пытаюсь настроить LOGIN_URL в settings.py вот так с той же ошибкой:
from django.core.urlresolvers import reverse
...
LOGIN_URL=reverse('django.contrib.auth.views.login')
Теперь длинный вопрос (в каком контексте, почему я хочу это сделать):
работая с django 1.3.1, я получил следующее представление, защищенное с auth.decorator:
@login_required
def my_view(request)
pass
Этот декоратор по умолчанию перенаправляет на / accounts / login (он работает, и это нормально для меня).
При использовании сервера разработки все URL-адреса относятся к localhost: /
На рабочем сервере (с использованием wsgi) все URL-адреса относятся к my-server: / path1 / Это связано с конфигурацией apache, которая говорит что-то вроде: WSGIScriptAlias / path1 /var/www/path/to/script.wsgi
И это меня устраивает.
Все URL-адреса, определенные в myproject / urls.py, автоматически относятся к этому новому пути, поэтому благодаря django весь мой сайт работает с этим новым «корнем html».
Но мое защищенное представление по-прежнему перенаправляет на my-server: / accounts / login / вместо my-server: / path1 / accounts / login
пока что я заставляю его работать, используя настройки.py
LOGIN_URL=/path1/accounts/login/
или используя параметр login_url декоратора "login_required":
@login_required(login_url="/path1/accounts/login/")
Но я бы хотел, чтобы это представление входа относилось ко всему пути сайта без настройки "path1" как в apache, так и в django / settings.py
I не думайте, что использование reverse в settings.py - это правильное решение ни использовать его в декораторе представления. Но пока я не знаю, как с этим справиться ...