基本上,在我的 index.html 模板中,我希望登录和注册表单在同一个(两者都有 csrf_token)。这是我的看法。
def index(request):
c = {}
c.update(csrf(request))
if request.method == 'POST':
form = MyRegistrationForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/register_success')
args = {}
args.update(csrf(request))
args['form'] = MyRegistrationForm()
return render_to_response('index.html', {c, form: args})
问题在于 render_to_response 语句。早些时候,我将索引视图作为两个不同的视图。
c = {}
c.update(csrf(request))
return render_to_response('index.html', c)
是登录的返回语句和
if request.method == 'POST':
form = MyRegistrationForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/register_success')
args = {}
args.update(csrf(request))
args['form'] = MyRegistrationForm()
return render_to_response('register.html', args)
是注册表单的返回声明。(注册表单和 index.html 登录表单之前在两个不同的模板中。我试图将它们放在一个模板中。
这是我的 index.html 模板(两个表单都在同一个模板中)。
<form action="/accounts/auth/" method="post">{% csrf_token %}
<label for="username">User name:</label>
<input type="text" name="username" value="" id="username">
<label for="password">Password:</label>
<input type="password" name="password" value="" id="password">
<input type="submit" value="login" />
</form>
<h2>Register</h2>
<form action="/accounts/register/" method="post">{% csrf_token %}
{{form}}
<input type="submit" value="Register" />
</form>