我试图将表单数据从外部html文件(不在django项目内)发送到django数据库,但我需要传递一个CRSK令牌,如果我用项目内的表单django它很容易,但是因为是django之外的一种形式,所以它的方式与众不同。在视图中我有这个:
def coords_save(request):
if request.is_ajax:
form = UbicacionForm(request.POST)
if form.is_valid():
form.save()
ubicaciones = Ubicacion.objects.all().order_by('-fecha')
data = '<ul>'
for ubicacion in ubicaciones:
data += '<li>%s %s</li>' % (ubicacion.nombre, ubicacion.user)
data += '</ul>'
return HttpResponse(simplejson.dumps({'ok':True,'msg':data}),mimetype='application/json')
else:
return HttpResponse(simplejson.dumps({'ok':False,'msg':'debes llenar los campos'}),mimetype='application/json')
这是html:
<script>
$('#form_coords').submit(function(e){
e.preventDefault();
$.post('/coords/save',$(this).serialize(),function(data){
if (data.ok){
$('#data').html(data.msg);
$('#form_coords').each(function(){
this.reset();
});
}
else{
alert(data.msg);
}
}, 'json');
});
</script>
</head>
<body>
<form action="linktodjangourl" id="form_coords" method="post">
<input type="text" id="nombre"/>
<input type="submit" value="enviar"/>
</form>
答案 0 :(得分:0)
如果您不希望在表单上使用CSRF保护,则可以使用表单1上的csrf_exempt
装饰器。
from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse
@csrf_exempt
def my_view(request):
return HttpResponse('Hello world')
但请确保在禁用它之前阅读CSRF并在内部采取安全措施 您的意见,以处理恶意表单提交。
1:https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#django.views.decorators.csrf.csrf_exempt