【发布时间】:2014-11-03 11:06:06
【问题描述】:
我正在学习 django,当我尝试在输入文本中输入一个值并将其作为参数传递给其他表单时,我得到了这些错误。
禁止 (403) CSRF 验证失败。请求中止。
失败的原因: CSRF 令牌丢失或不正确。
这是我的sn-ps
forms.py
class ConfigForm(forms.ModelForm):
def __init__(self,*args, **kwargs):
id_provider = kwargs.pop('id_provider')
super(ConfigForm,self).__init__(*args, **kwargs)
self.fields['id_provider'].widget= forms.TextInput(attrs='id_provider:Id_provider'})
id_provider = forms.CharField()
class Meta:
model = Config
views.py
def configView(request):
a = request.session.get('a', None)
if request.method == 'POST':
form = ConfigForm(request.POST, instance=a)
if form.is_valid():
save_it = form.save(commit=False)
save_it.save()
else:
form = ConfigForm(instance = a)
return render_to_response("config.html",{'id_providor':id_provider},context_instance=RequestContext(request))
我尝试将值发送到参数的html代码:
<form method='post' action="/config/">
<input type="text" class="form-control" name="id_provider" id="id_provider" value="{{ id_providor }}"/>
<input class="btn btn-danger" type="submit" value="Config">
config.html(我发送值的表单)
{% extends 'base.html' %}
{% block content %}
<div class="container">
<div class="row">
<div class="col-md-4">
<form method='POST' action='' class='form'>
<div class="form-group">
{% csrf_token %}
{{ form.as_p }}
</div>
<button type='submit' class="btn btn-primary">Save</button>
</form>
</div>
</div>
</div>
{% endblock %}
我不知道错误是在视图中还是我尝试发送参数的方式。 请帮忙 提前致谢
更新 我用 ConfigView(views.py) 上方的标志 @csrf_exempt 解决了这个问题 现在我有这个错误:
KeyError at /config/
'id_proveedor'
Request Method: POST
Request URL: http://192.168.0.219:8080/config/
Django Version: 1.6.5
Exception Type: KeyError
Exception Value:
'id_provider'
Exception Location: /home/pyc/DjangoProjects/monitor/prov/forms.py in __init__, line 19
Python Executable: /usr/local/bin/python
Python Version: 2.7.3
Python Path:
['/home/pyc/DjangoProjects/monitor',
'/usr/local/lib/python2.7/site-packages/simplejson-3.6.0-py2.7-linux-x86_64.egg',
'/usr/local/lib/python27.zip',
'/usr/local/lib/python2.7',
'/usr/local/lib/python2.7/plat-linux2',
'/usr/local/lib/python2.7/lib-tk',
'/usr/local/lib/python2.7/lib-old',
'/usr/local/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/site-packages']
我不明白出了什么问题。 有什么建议吗??
【问题讨论】:
-
这个html sn-p属于哪里?它不是 config.html 模板的一部分,是吗?
-
yes 在 config.html 模板中。我将标志@csrf_exempt 放在views.py 中并且错误消失了,现在我有一个新错误: KeyError at /config/ 'id_provider' Exception Location: /home/pyc/DjangoProjects/monitor/prov/forms.py in 初始化,第 19 行
标签: python django django-forms csrf