首页 > 解决方案 > 使用 Django 创建登录视图页面?

问题描述

我正在尝试创建一个登录视图页面,以在没有混合或装饰器的情况下完成对用户进行身份验证和登录的过程。我有以下代码:

urls.py:

from django.urls import path

from . import views

urlpatterns = [
  path('', views.home, name="home"),
  path('accounts/login/', views.login_view, name="login"),

views.py:

def login_view(request):
    if request.method == "POST":
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(request, username=username, password=password)
        if user is not None:
            # login(request, user)
            return HttpResponse("logged in!")
        else:
            return HttpResponse("invalid credentials")
    return render(request, 'registration/login.html')

templates/registration/login.html:

{% block content %}
<h1>Log in!</h1>
<form method="post" action="{% url 'login' %}">
{% csrf_token %}
<table>
<tr>
    <td>{{ form.username.label_tag }}</td>
    <td>{{ form.username }}</td>
</tr>
<tr>
    <td>{{ form.password.label_tag }}</td>
    <td>{{ form.password }}</td>
</tr>
</table>

<input type="submit" value="login">
</form>


{% endblock %}

当我尝试访问该accounts/login页面时,我的表格没有出现。我在这里做错了什么?

标签: pythondjangoauthentication

解决方案


您没有在 render() 函数中将任何形式传递给上下文,它应该类似于:

...
return render(request, "registration/login.html", {"form": YouLoginForm()})

推荐阅读