我的views.py文件中有一个视图,如下所示:
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), render_to_response('index.html', args)
我的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>
我想为其action =“/ accounts / auth /”的表单呈现c,并为其action =“/ accounts / register /”的表单呈现args ..任何想法我将如何这样做?< / p>
答案 0 :(得分:1)
不需要两个单独的csrf令牌,并且由于您的词典c
不包含令牌以外的任何数据,您可以使用render_to_response('index.html', args)
来实现您想要的目标。
甚至更好,使用render(request, 'index.html', args)
。我还建议使用模板上下文处理器在视图中获取csrf标记,如here所述。