У меня очень распространенная проблема - после входа я хочу перенаправить на страницу, где был вызван вход. Я могу описать ситуацию точно так, как здесь: Django: перенаправление на предыдущую страницу после входа в систему
Существует 2 варианта входа в систему - с домашней страницы (которая определяется в базе . html) и из боке. html (другие виды наследуются от боке)
моя база. html и боке. html есть тот же блок для перенаправления для входа в систему. Разница в том, что имя входа, вызванное с домашней страницы, должно вернуться на домашнюю страницу, а с другой страницы вернуться на страницу, где был вызван.
<li class="nav-item">
<a class="nav-link" href="{% url 'login' %}">Login</a>
</li>
мой логин. html
<form method="POST">
{% csrf_token %}
<div class="form-group">
<input type="text" class="form-control" placeholder="Enter Username" name="username" required>
</div>
<div class="form-group">
<input type="password" class="form-control" placeholder="Enter Password" name="password" required>
</div>
<div class="form-group">
<button type="submit" class="btn btn-dark">Login</button>
</div>
</form>
и views.py
def login(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = auth.authenticate(username=username,password=password)
if user is not None:
auth.login(request,user)
return redirect('home')
else:
messages.info(request,'Invalid credentials')
return redirect('login')
else:
return render(request,'login.html')
Я пытался добавить рядом с моей формой в логин. html, но это не так т работа. При доступе к входу со страницы, отличной от домашней, это было похоже на localhost:8000/login?next=/bokeh/
, и после отправки формы я все еще был на входе, но URL изменился на localhost:8000/login?next=
. Я знаю, что это довольно сложно объяснить, но я добавлю другую нуждающуюся информацию.