Django 自定义登录表单不显示输入字段
Django custom login form not displaying inputfields
我的登录模板有问题。我不确定,但我想我使用的是自定义表单,因为路径是 templates/registration/login.html 。所以,我认为它被替换为通常的 django 形式。但是我的表单的输入字段没有显示,所以我只有登录按钮和它下面的一些文本。我读到的类似问题无法解决,所以我希望有人能在这里帮助我。如果您需要更多代码,请告诉我。提前致谢。
views.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",{})
urls.py
from register import views as v
path("", v.login, name="login"),
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 %}
render() 函数将请求对象作为第一个参数,模板名称作为第二个参数,字典作为可选的第三个参数。
因此,您应该将 {"form": form}
作为渲染函数的第三个参数传递。
我的登录模板有问题。我不确定,但我想我使用的是自定义表单,因为路径是 templates/registration/login.html 。所以,我认为它被替换为通常的 django 形式。但是我的表单的输入字段没有显示,所以我只有登录按钮和它下面的一些文本。我读到的类似问题无法解决,所以我希望有人能在这里帮助我。如果您需要更多代码,请告诉我。提前致谢。
views.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",{})
urls.py
from register import views as v
path("", v.login, name="login"),
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 %}
render() 函数将请求对象作为第一个参数,模板名称作为第二个参数,字典作为可选的第三个参数。
因此,您应该将 {"form": form}
作为渲染函数的第三个参数传递。