Django提交表单而不刷新页面

时间:2016-04-05 14:59:29

标签: javascript python angularjs django forms

我正在使用 Django-Angular 并尝试发布表单并在后端获取数据..我能够实现此目的但却发现保存表单时页面正在重新加载。如何在没有页面渲染的情况下实现相同的目标?

forms.py

private PendingIntent createActionSendPendingIntent(int requestCode, Context context, String extraMessage){
    Intent intent = new Intent(context, NotificationService.class);
    intent.putExtra(NotificationService.MESSAGE_EXTRA, extraMessage);
    return PendingIntent.getService(context, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}

home.html的

def home(request):
    if 'application/json' in request.META['CONTENT_TYPE']:
        print 'hi'
        print request.body

    return render(request, 'home.html', {})

脚本

<form name="indexForm" ng-submit="submitForm()">

    <div class="form-group">
        <label>File Path</label>
        <input type="text" name="path" class="form-control" ng-model="file.path">
    </div>
    <div class="form-group">
        <label>File Name</label>
        <input type="text" name="file_name" class="form-control" ng-model="file.file_name">
    </div>
    <div class="form-group">
        <label>ext</label>
        <input type="text" name="ext" class="form-control" ng-model="file.ext">
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>

</form>

请告诉我上面的代码发布数据的正确方法?我们如何发布数据从角度到后端(django)没有页面刷新

提前致谢...非常感谢任何帮助

2 个答案:

答案 0 :(得分:0)

在您的家庭请求中,您不应该再次呈现页面,而是将字符串或一些JSON返回给客户端。如果你使用的是新版本的django,你可以这样做:

from django.http import JsonResponse

def home(request):
if 'application/json' in request.META['CONTENT_TYPE']:
    print 'hi'
    print request.body
    return JsonResponse({'foo':'bar'})

return render(request, 'home.html', {})

答案 1 :(得分:0)

type="submit替换为type="button"。然后,您可以使用ng-click="ctrl.foo()"

调用后端中的任何方法

至少这是我到目前为止所做的。然而,查看文档表明这不是问题。