django - повторное использование шаблона входа - PullRequest
1 голос
/ 24 декабря 2011

Мне просто любопытно, правильно ли я это делаю.

Я кодирую частный раздел веб-сайта и написал вид входа в систему, который открывает окно входа в систему. Я хочу повторно использовать это представление для нескольких URL-адресов, которые после предоставления доступа переходят к другим представлениям. Похоже, что вы не можете передавать аргументы в операторах в urls.py, поэтому я дал представлению входа в систему дополнительный аргумент redirect

def login(request, redirect):
    code to read the login form and parse the POST input
    if POST and loginSuccessful:
        return redirect(request)
    else:
        return render_to_response('login.html', context)

... и каждый конкретный URL активирует отдельную однострочную строку, например login_to_admin, которая просто возвращает представление входа в систему с аргументом перенаправления.

def login_to_admin(request):
    return login(request, admin)

def login_to_beta(beta):
    return login(request, beta)

Все работает, мне просто интересно, если это правильный способ сделать это.

Ответы [ 3 ]

5 голосов
/ 24 декабря 2011

Не похоже, что вы можете передавать аргументы в выражениях в urls.py

На самом деле вы можете.

Третьим элементом в url conf может быть словарь kwargs, которому будет передана ваша функция просмотра.

(r'^my_url/$', 'login', {'redirect': admin}),
(r'^my_other_url/$', 'login', {'redirect': beta}),
2 голосов
/ 24 декабря 2011

Вы можете использовать декоратор , необходимый для входа в систему , так как это облегчит поддержку вашего кода.

В вашем подходе нет ничего плохого, но он менее универсален и, следовательно, более подвержен неожиданному поведению и недосмотрам.

0 голосов
/ 24 декабря 2011

Вы также можете добавить дополнительное поле в форму входа, например, следующее, которое будет содержать правильный URL-адрес.И после проверки формы и входа в систему перенаправить пользователя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...