django redirect не работает

Django redirect после входа в систему не работает «далее» не публикуется? [дубликат]

этот вопрос уже есть ответ здесь:

у меня есть страница входа в систему, которая работает нормально, за исключением редиректа на страницу реферера. Пользователь получает электронное письмо с прямой ссылкой в приложении, они (в этот пример) еще не вошли в систему и перенаправляются на страницу входа в систему. После успешного входа пользователь перенаправляется на жестко закодированный путь. См. пример ниже.

URL в электронной почте: http://localhost:8000/issueapp/1628/view/22

URL страницы входа в систему: http://localhost:8000/login?next=/issueapp/1628/view/22

просмотр входа (с жестко закодированным перенаправлением):

вид входа в систему (с перенаправлением» next»):

вышеуказанное представление приводит к исключению «Key ‘next’ not found in » в форме не отображается сообщение » далее» переменная, хотя она есть в url и в форме. Я искал и искал везде и не могу понять, почему это не работает. Есть идеи?

дополнительная ссылка:

шаблон входа в систему:

EDIT: ниже приведен код, который теперь работает для меня (благодаря помощи Paulo Bu)! **

Шаблон Входа В Систему:

5 ответов

вы должны объявить html-форму action как это для того, чтобы ваш вид работы.

там, если есть next переменная, то вы включаете в url для получения его в качестве параметра get. Если нет, то форма не включает его.

это лучший подход, но вы также можете исправить это в своих представлениях, запросив next С POST словарь такой:

обычно в шаблоне вы бы сделали что-то вроде это:

надеюсь, что это помогает!

короче

Я бы определил в вашем представлении функцию next_page = request.GET[‘next’] и затем перенаправить на него return HttpResponseRedirect(next_page) поэтому вам никогда не нужно менять шаблоны; просто установите @login_required и ты в порядке.

Читайте также:  макароны и паста в чем отличие

например:

settings.py

urls.py

views.py

Если вы хотите быть более общим, вы можете просто сделать что-то вроде этого, которое передает любой из параметров GET при публикации формы:

вот ссылка рассказывает о том же

Примечание:

вы можно получить текущий url с помощью request.path С view также.

спасибо буфер. Я просто скопировал и вставил ваш комментарий, попробовав его сам в своем собственном коде.

Источник

Django redirect после входа в систему не работает «next» не публикует?

У меня есть страница входа, которая работает нормально, за исключением перенаправления на страницу реферера. Пользователь получает электронное письмо с прямой ссылкой в ​​приложении, они (в этом примере) уже не вошли в систему и перенаправляются на страницу входа. После успешного входа пользователь перенаправляется на жесткий путь. См. Пример ниже.

URL в электронной почте: http://localhost:8000/issueapp/1628/view/22

URL-адрес страницы входа: http://localhost:8000/login?next=/issueapp/1628/view/22

Вход в систему (с перенаправлением с жестким кодом):

Вход в систему (со следующим «перенаправлением» ):

Вышеизложенное представление приводит к исключению «Key ‘next’ not found in » Форма, похоже, не публикует «следующую» переменную, даже если ее там в URL-адресе и в форме. Я искал и смотрел повсюду и не мог понять, почему он не работает. Любые идеи?

Дополнительная ссылка:

EDIT: Ниже приведен код, который теперь работает для меня (благодаря помощи Пауло Бу)! **

ОТВЕТЫ

Ответ 1

Вы должны объявить html-форму action следующим образом, чтобы ваши представления работали.

Это лучший подход, но вы также можете исправить это в своих представлениях, запросив next из словаря post следующим образом:

Обычно в шаблоне вы делаете что-то вроде этого:

а затем выполните следующие действия:

Надеюсь, это поможет!

Ответ 2

Короче

В качестве примера:

settings.py

urls.py

views.py

Ответ 3

Если вы хотите быть более общим, вы можете просто сделать что-то подобное, которое передает любой из параметров GET при отправке формы:

Читайте также:  строительство бань в нижневартовске под ключ

Ответ 4

Вот ссылка рассказывает о том же

Примечание:

Благодаря buffer. Я только что скопировал и вставил ваш комментарий после того, как попробовал сам в своем собственном коде.

Ответ 5

Пустое действие ‘ what ever current complete url is ‘

Источник

Редирект nginx django без www?

В настройках
allowed_hosts = [‘.dmain.com’,’www.dmain.com’]

Ну так покажите результаты
host domain.com
и
host www.domain.com

И может до вашего браузера изменения ещё не дошли…

Алексей Тен: Digital Ocean.
Все зделал по ответу. host показ айпи моего дроплета.
The page isn’t redirecting properly

Firefox has detected that the server is redirecting the request for this address in a way that will never complete.

This problem can sometimes be caused by disabling or refusing to

Источник

Django Redirects не работает, как ожидалось

Я переименовал этот вопрос, так как после более глубокого погружения я обнаружил, что это основная проблема, из-за которой сообщения не отображаются.

Я пытаюсь перенаправить на страницу состояния действия для отображения баннера предупреждения / успеха, когда конкретное представление Django возвращает сообщение для информирования пользователя, я не использую формы.

Ниже приведен весь код, который я ранее просил, пожалуйста, дайте мне знать, если вам нужно больше!

settings.py

message.html

Обновление Я создал тест, который работает, и отразил код из теста, однако он не работает. Тест ниже.

views.py

urls.py

Инспектор сети Google Chrome показывает следующее:

Сценарий № 1: POST-запрос переходит в «updateSignoutStatus/»

Поведение

Страница не переходит на перенаправленную страницу.

Сценарий № 2: запрос GET переходит к «test/»

Поведение

Страница изменяется на перенаправленную страницу.

Редактирование #1: модифицированный код, чтобы отразить текущее состояние после получения понимания того, как работают сообщения, проблема все еще сохраняется.

Читайте также:  обучение с использованием предварительного речевого проговаривания действий наиболее эффективно при

Редактирование #2: добавлено больше контекста в код index.html & views.py.

Редактировать № 3: Обновление в выпуске.

Источник

Django LOGIN_REDIRECT_URL не работает со «следующим» параметром запроса

Django 1.11.3 Документация о LOGIN_REDIRECT_URL гласит:

URL-адрес, куда запросы перенаправляются после входа в систему, когда представление contrib.auth.login не получает следующего параметра.

У меня есть LOGIN_REDIRECT_URL = «some_url» в setting.py Я вижу «next =» (без значения, только ключ) в URL-адресе запроса при входе в систему, поэтому я подозреваю, что Django игнорирует LOGIN_REDIRECT_URL, и я в конечном итоге на странице администратора по умолчанию, Я использую функциональность по умолчанию для входа в Django, никакой пользовательский шаблон или что-то еще. Как мне избавиться от » next= » в моем запросе, когда я вхожу в систему (полностью, без ключа), чтобы посмотреть, будет ли LOGIN_REDIRECT_URL действительно использоваться (надеюсь)?

Это ожидаемое поведение. Обычно вы хотите, чтобы пользователь, запрашивающий любое представление, требующее входа в систему (с декоратором @login_required ), был перенаправлен в это же представление после входа в систему. Это задокументировано здесь

Если вы удалите декоратор @login_required для вашего просмотра и просто добавите кнопку входа в систему на своей домашней странице (которая идет в обычный LoginView ), у него не будет next параметра, и ваши пользователи будут перенаправлены на LOGIN_REDIRECT_URL как и ожидалось.

Удалите декоратор @login_required сделайте проверку и перенаправление на ваш взгляд:

Если вы используете представления на основе классов, используйте LoginRequiredMixin в своем представлении и обрабатывайте handle_no_permission() самостоятельно:

Источник

Образовательный портал