Python 无法发送注册表表单
无法发送注册表表单。 我在views.py上写的Python 无法发送注册表表单,python,html,django,Python,Html,Django,无法发送注册表表单。 我在views.py上写的 def login(request): login_form = LoginForm(request.POST) regist_form = RegisterForm(request.POST) if login_form.is_valid(): user = login_form.save() login(request, user) context = {
def login(request):
login_form = LoginForm(request.POST)
regist_form = RegisterForm(request.POST)
if login_form.is_valid():
user = login_form.save()
login(request, user)
context = {
'user': request.user,
'login_form': login_form,
'regist_form': regist_form,
}
return redirect('profile')
context = {
'login_form': login_form,
'regist_form': regist_form,
}
return render(request, 'registration/accounts/login.html', context)
在login.html中
<body>
<ul class="top-menu">
<h3 class="login">Login</h3>
<div class="container">
<form action="{% url 'login' %}" method="post" role="form">
{% csrf_token %}
<div class="form-group">
<label class="email_form">Email</label>
<input for="id_email" name="email" type="text" value="" placeholder="Email" class="form-control"/>
</div>
<div class="form-group">
<label class="password_form">Password</label>
<input id="id_password" name="password" type="password" value="" minlength="8" maxlength="12" placeholder="Password" class="form-control"/>
</div>
<button type="submit" class="btn btn-primary btn-lg">Login</button>
<input name="next" type="hidden" value="{{ next }}"/>
</form>
</div>
</ul>
<div class="newaccount">
<h2>New Account registration</h2>
<form class="form-inline" action="{% url 'accounts:detail' %}" method="POST">
<div class="form-group">
<label for="id_username">Username</label>
{{ form.username }}
{{ form.username.errors }}
</div>
<div class="form-group">
<label for="id_email">Email</label>
{{ form.email }}
{{ form.email.errors }}
</div>
<div class="form-group">
<label for="id_password">Password</label>
{{ form.password1 }}
{{ form.password1.errors }}
</div>
<div class="form-group">
<label for="id_password">Password(conformation)</label>
{{ form.password2 }}
{{ form.password2.errors }}
<p class="help-block">{{ form.password2.help_text }}</p>
</div>
<button type="submit" class="btn btn-primary btn-lg">Regist</button>
<input name="next" type="hidden"/>
{% csrf_token %}
</form>
</div>
</body>
在URL.py中
urlpatterns = [
url(r'^login/$', views.login,name='login'),
]
登录表单中没有错误,但注册表单中没有显示所有输入字段。我认为无法发送RegisterForm,但我确实无法理解为什么LoginForm的所有输入字段都可以,尽管我使用RegisterForm的相同方式发送LoginForm。
我应该如何解决这个问题?我应该写什么?您正在使用HTML表单中的
登录表单
和注册表单
呈现HTML
但是您试图使用form
var而不是register\u form
进行渲染,因此django不知道要渲染什么
若您试图在django模板引擎中呈现not exist变量,它只会显示Nothing
。所以不会有错误
按如下方式更改HTML代码:
<body>
<ul class="top-menu">
<h3 class="login">Login</h3>
<div class="container">
<form action="{% url 'login' %}" method="post" role="form">
{% csrf_token %}
<div class="form-group">
<label class="email_form">Email</label>
<input for="id_email" name="email" type="text" value="" placeholder="Email" class="form-control"/>
</div>
<div class="form-group">
<label class="password_form">Password</label>
<input id="id_password" name="password" type="password" value="" minlength="8" maxlength="12"
placeholder="Password" class="form-control"/>
</div>
<button type="submit" class="btn btn-primary btn-lg">Login</button>
<input name="next" type="hidden" value="{{ next }}"/>
</form>
</div>
</ul>
<div class="newaccount">
<h2>New Account registration</h2>
<form class="form-inline" action="{% url 'accounts:detail' %}" method="POST">
<div class="form-group">
<label for="id_username">Username</label>
{{ regist_form.username }}
{{ regist_form.username.errors }}
</div>
<div class="form-group">
<label for="id_email">Email</label>
{{ regist_form.email }}
{{ regist_form.email.errors }}
</div>
<div class="form-group">
<label for="id_password">Password</label>
{{ regist_form.password1 }}
{{ regist_form.password1.errors }}
</div>
<div class="form-group">
<label for="id_password">Password(conformation)</label>
{{ regist_form.password2 }}
{{ regist_form.password2.errors }}
<p class="help-block">{{ regist_form.password2.help_text }}</p>
</div>
<button type="submit" class="btn btn-primary btn-lg">Regist</button>
<input name="next" type="hidden"/>
{% csrf_token %}
</form>
</div>
</body>
登录
{%csrf_令牌%}
电子邮件
密码
登录
新帐户注册
用户名
{{regist_form.username}
{{regist_form.username.errors}
电子邮件
{{regist_form.email}
{{regist_form.email.errors}
密码
{{regist_form.password1}}
{{regist_form.password1.errors}
密码(确认)
{{regist_form.password2}
{{regist_form.password2.errors}
{{regist\u form.password2.help\u text}
注册
{%csrf_令牌%}
此代码将显示您的输入
标记
还有一件事……为什么不在HTML中使用
登录表单
?在HTML表单中使用登录表单
和注册表单
呈现HTML
但是您试图使用form
var而不是register\u form
进行渲染,因此django不知道要渲染什么
若您试图在django模板引擎中呈现not exist变量,它只会显示什么都不显示
,所以不会出现错误
按如下方式更改HTML代码:
<body>
<ul class="top-menu">
<h3 class="login">Login</h3>
<div class="container">
<form action="{% url 'login' %}" method="post" role="form">
{% csrf_token %}
<div class="form-group">
<label class="email_form">Email</label>
<input for="id_email" name="email" type="text" value="" placeholder="Email" class="form-control"/>
</div>
<div class="form-group">
<label class="password_form">Password</label>
<input id="id_password" name="password" type="password" value="" minlength="8" maxlength="12"
placeholder="Password" class="form-control"/>
</div>
<button type="submit" class="btn btn-primary btn-lg">Login</button>
<input name="next" type="hidden" value="{{ next }}"/>
</form>
</div>
</ul>
<div class="newaccount">
<h2>New Account registration</h2>
<form class="form-inline" action="{% url 'accounts:detail' %}" method="POST">
<div class="form-group">
<label for="id_username">Username</label>
{{ regist_form.username }}
{{ regist_form.username.errors }}
</div>
<div class="form-group">
<label for="id_email">Email</label>
{{ regist_form.email }}
{{ regist_form.email.errors }}
</div>
<div class="form-group">
<label for="id_password">Password</label>
{{ regist_form.password1 }}
{{ regist_form.password1.errors }}
</div>
<div class="form-group">
<label for="id_password">Password(conformation)</label>
{{ regist_form.password2 }}
{{ regist_form.password2.errors }}
<p class="help-block">{{ regist_form.password2.help_text }}</p>
</div>
<button type="submit" class="btn btn-primary btn-lg">Regist</button>
<input name="next" type="hidden"/>
{% csrf_token %}
</form>
</div>
</body>
登录
{%csrf_令牌%}
电子邮件
密码
登录
新帐户注册
用户名
{{regist_form.username}
{{regist_form.username.errors}
电子邮件
{{regist_form.email}
{{regist_form.email.errors}
密码
{{regist_form.password1}}
{{regist_form.password1.errors}
密码(确认)
{{regist_form.password2}
{{regist_form.password2.errors}
{{regist\u form.password2.help\u text}
注册
{%csrf_令牌%}
此代码将显示您的输入
标记
还有一件事…为什么不在HTML中使用登录表单