Python 我如何提交;邮政「;没有AJAX的Django中的方法表单?
我是Django的新手,我还与一些朋友在此框架中开发了一个非常重要的项目。我在Django中提交方法表单时遇到问题 我遇到了Python 我如何提交;邮政「;没有AJAX的Django中的方法表单?,python,django,forms,post,csrf,Python,Django,Forms,Post,Csrf,我是Django的新手,我还与一些朋友在此框架中开发了一个非常重要的项目。我在Django中提交方法表单时遇到问题 我遇到了“403禁止”错误。它表示我的CSRF令牌配置不正确。不过,我很确定我的设置是正确的。 我的表单是关于更新数据库(MySQL)中的django用户帐户的。我也不知道我的程序逻辑在视图中是否正确。因为这个愚蠢的错误,我甚至没有机会测试它。 下面的图片和代码举例说明了我的问题 我的表格: <form method="POST" action="/validacao/" n
“403禁止”错误
。它表示我的CSRF令牌配置不正确
。不过,我很确定我的设置是正确的。
我的表单是关于更新数据库(MySQL)中的django用户帐户的。我也不知道我的程序逻辑在视图中是否正确。因为这个愚蠢的错误,我甚至没有机会测试它。
下面的图片和代码举例说明了我的问题
我的表格:
<form method="POST" action="/validacao/" name="user" class="current2"> {% csrf_token %}
<table>
<tr>
<td>Nome:</td><td>
<input type='text' name='first_name' maxlength='30' value='{{usuario.first_name}}' class="campo2" />
</td>
<td>Permissão: <font style="color: red;">
{% if usuario.is_staff %} Admin {% else %} Comum {% endif %}</font>
</td>
</tr>
<tr>
<td>Sobrenome:</td>
<td><input type='text' name='last_name' maxlength='30' value='{{usuario.last_name}}' class="campo2" /></td>
</tr>
<tr>
<td>Email:</td>
<td><input type='text' name='email' maxlength='75' value='{{usuario.email}}' class="campo2"/></td>
</tr>
<tr>
<td>Senha:</td><td> <input type='password' name='password' maxlength='120' class="campo2"/></td>
</tr>
<tr>
<td>Confirmar Senha:</td><td><input type='password' name='password2' maxlength='120' class="campo2"/></td>
</tr>
<tr><td></td><td><input type='submit' name='salvar' value='Salvar' class="botao2"/></td></tr>
</table>
</form>
注意:“url.py”设置正确,奇怪的是我可以使用Django调试工具栏看到csrftoken cookie变量。只需将@csrf_emption放在您的
def validacao_perfil(请求):
上,看看这是否有效,并尝试读取Django的文档。非常好 不过,你的settings.py呢?您是否启用了'django.middleware.csrf.CsrfViewMiddleware'
?添加到Alex:您是否在呈现的html中看到csrf标记?我非常怀疑主题所有者希望他的代码“无论如何”工作,仍然有一个问题需要解决。@csrf\u豁免是否禁用csrf验证?我只是想让它在启用CSRF的情况下工作得很好,但我在这方面运气不好。我有办法禁用CSRF,但我认为让它在这个项目中工作很重要。
def validacao_perfil(request):
if request.POST:
try:
request.user.first_name = request.POST['first_name']
request.user.last_name = request.POST['last_name']
request.user.email = request.POST['email']
request.user.password = request.POST['password']
request.user.save()
validacao=1
except:
validacao=0
variaveis_resposta={ 'usuario':request.user,
'MEDIA_URL':settings.MEDIA_URL,
'height_backgroud':'900',
'rodape':'position:relative; top: 148px;',
'ordem':0,
'validacao':validacao,
'context_instance':RequestContext(request),
}
return render_to_response("perfil_usuario.html", variaveis_resposta)