首页 > 解决方案 > Django自定义登录表单不显示输入字段

问题描述

我的登录模板有问题。我不确定,但我认为我正在使用自定义表单,因为路径是 templates/registration/login.html 。所以,我认为它被替换为通常的 django 形式。但是我的表单的输入字段不显示,所以我只有登录按钮和它下面的一些文本。我阅读的类似问题无法解决,所以我希望有人可以在这里提供帮助。如果您需要更多代码,请告诉我。提前致谢。

视图.py

def login(response):

if response.method == "POST":
    form = LoginForm(response.POST)
    if form.is_valid():
        username = form.cleaned_data.get("username")
        password = form.cleaned_data.get("password")
        user = authenticate(username=username, password=password)
        auth_login(response,user)
        return redirect("home")
else:
    form = LoginForm()
    
return render(response, "registration/login.html",{})

网址.py

from register import views as v

path("", v.login, name="login"),

登录.html

{% block content %}
<form method="POST">
    {% csrf_token %}
    <div class="content">
    
    <h3>{{form.username}}</h3>
    <h3>{{form.password}}</h3>

    <button type="submit">Login</button>

    </div>
</form>
<br>
<p>Don´t have an account yet?</p>
<p>Create one <a href="/signup">here</a></p>
{% endblock %}

标签: pythondjangodjango-login

解决方案


render() 函数将请求对象作为第一个参数,模板名称作为第二个参数,字典作为可选的第三个参数。

所以,你应该{"form": form}作为第三个参数传递给渲染函数。


推荐阅读