如何将表单数据从外部html文件发送到django?

时间:2014-09-09 04:52:27

标签: javascript python html django forms

我试图将表单数据从外部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>

1 个答案:

答案 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并在内部采取安全措施 您的意见,以处理恶意表单提交。

1https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#django.views.decorators.csrf.csrf_exempt