登录后Django重定向到原始页面

时间:2020-05-14 12:50:14

标签: django authentication redirect django-forms

所以我有一个'Books'网页,您可以选择登录。登录后,我希望用户再次重定向到该'Books'网页,而不是首页。 这是我在views.py中的登录功能如下:

def loginPage(request):

    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')

        # check if user is authenticated
        user = authenticate(request, username=username, password=password)

        if user is not None:
            login(request, user)
            return redirect('home')
        else:
            messages.info(request, 'Username OR password is incorrect')

    response = {}
    return render(request, 'login.html', response)

“我的图书”模板上的登录按钮如下所示:

<div class="alert alert-secondary" role="alert">
      <h5 class="display-5">Are you not signed in?</h5>
      <a href="{% url 'login' %}"><button href="{% url 'login' %}" class="btn btn-large waves-effect waves-light grey darken-4">Login</button></a>
</div>

这是登录表单的样子:

<div class="d-flex justify-content-center form_container">
    <form method="POST" action=""> -->
        {% csrf_token %}
        <div class="input-group mb-3">
            <div class="input-group-append">
                <span class="input-group-text"><i class="fas fa-user"></i></span>
            </div>
            <input type="text" name="username" placeholder="Username..." class="form-control">
        </div>
        <div class="input-group mb-2">
            <div class="input-group-append">
                <span class="input-group-text"><i class="fas fa-key"></i></span>
            </div>
            <input type="password" name="password" placeholder="Password..." class="form-control">
        </div>
        <div class="d-flex justify-content-center mt-3 login_container">
            <input class="btn login_btn" type="submit" value="Login">
        </div>
    </form>
</div>

我一直在查看有关如何执行此操作的文章,但是他们一直在执行此操作,前提是假设用户必须先经过身份验证才能访问网页。就我而言,用户是否登录是可选的-当他们登录时,他们将被重定向。

顺便说一句,我也尝试在模板上添加整个“ request.GET.next”内容,但是似乎都没有用。

任何帮助将不胜感激!

0 个答案:

没有答案