首页 > 解决方案 > 登录网站后无法访问正确的 URL

问题描述

我在登录后使用重定向将用户发送到主页,但是当用户尝试登录时,它会将用户带到一些不同的 URL。

views.py-中的登录功能

def login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(username=username, password=password)
        if user:
            if user.is_active:
                login(request,user)
                return redirect('/homepage')
            else:
                return HttpResponse("Your account is not active.")
        else:
            print("Someone tried to login and failed.")
            print("They used username: {} and password: {}".format(username,password))
            return HttpResponse("Invalid login details supplied.")

    else:
        return render(request, 'Login.html', {})

它所采用的 URL - “http://127.0.0.1:8000/accounts/profile/”

login.html-

<!DOCTYPE html>
{% extends "_inject.html" %}
{% load bootstrap4 %}
{% load staticfiles %}
{% block content %}
<div class="wrapper">
    <div class="container">
      <!-- <div class="jumbotron"> -->


      <h1 class="c1">Login here</h1>

        <form method="POST" class="form">
          {% csrf_token %}
          {% bootstrap_form form %}
          {% buttons %}
            <button type="submit" class="btn btn-primary">Login</button>
          {% endbuttons %}
        </form>

        <!-- </div> -->

      </div>
  </div>

{% endblock %}

URL 模式——

urlpatterns = [
    path('admin/', admin.site.urls),
    # path('', views.index, name='base'),
    path('signup/', views.register, name='register'),
    path('createpost/', views.CreatePost, name='createpost'),
    path('login/', auth_views.LoginView.as_view(template_name="login.html"),name='login'),
    path('logout/', auth_views.LogoutView.as_view(), name="logout"),
    path("by/<username>/<int:pk>/",views.PostDetail.as_view(),name="single"),
    path("delete/<int:pk>/",views.DeletePost.as_view(),name="delete"),
    path('', views.ListPosts.as_view(), name="homepage"),
]

标签: pythondjangodjango-viewsdjango-urlsdjango-users

解决方案


在您的设置文件中,添加以下内容: LOGIN_REDIRECT_URL = 'homepage'

这将在成功登录后将用户重定向到主页。

LOGIN_URL= 'login' LOGOUT_URL= 'logout'

有关更多信息,请查看以下内容:https ://docs.djangoproject.com/en/3.0/ref/settings/#login-redirect-url


推荐阅读