Django在不刷新页面的情况下提交表单
Django submit form without page refresh
我正在使用Django Angular,并试图发布表单并在后端获取数据。。我能够做到这一点,但发现页面在保存表单时正在重新加载。如果没有页面渲染,我们如何实现这一点?
forms.py
def home(request):
if 'application/json' in request.META['CONTENT_TYPE']:
print 'hi'
print request.body
return render(request, 'home.html', {})
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>
脚本
$scope.submitForm = function() {
console.log('from submit')
$http({
url: 'http://127.0.0.1:8000/',
data: $scope.file,
method: 'POST',
headers: {
'X-CSRFToken': $cookies['csrftoken']}
})
}
请让我知道上面的代码是发布数据的正确方式?我们如何在不刷新页面的情况下将数据从角度发布到后端(django)
提前感谢。。。任何帮助都非常感谢
在主页请求中,您不应该再次呈现页面,而应该向客户端返回一个字符串或一些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', {})
将type="submit
替换为type="button"
。然后您可以使用ng-click="ctrl.foo()"
在后端调用任何方法
至少到目前为止我一直在这么做。然而,查看文档表明这不是问题所在。
相关文章:
- 如何在不重新加载的情况下提交表单,并使用Node+Express将数据传递回同一页面
- 如何在没有按钮的情况下提交表单
- 使用javascript创建Form元素,并在不重定向/刷新的情况下提交
- 如何在不刷新 node.js 和 ejs 的情况下提交表单
- 防止在没有ajax的情况下提交后重定向表单
- onclickjquery可以在不重新加载页面的情况下提交表单
- Django在不刷新页面的情况下提交表单
- 阻止在未填写所有输入的情况下提交订单
- JavaScript 在没有提交按钮的情况下提交,通过键盘输入
- 在没有服务器端脚本的情况下提交表单
- 如何在不先呈现表单的情况下提交表单
- 导致表单在未经验证的情况下提交的声明
- 如何在不重新加载的情况下提交表单
- 在不使用PHP的情况下提交联系表
- 阻止在内联附加事件的情况下提交表单
- 无法在不重新加载页面的情况下提交表单
- 在不刷新的情况下提交表单后将行添加到表中-jquery ajax php
- 如何在没有提交按钮的情况下提交所选值
- 表单验证不起作用,用于在未经验证的情况下提交
- 如何在不重定向的情况下提交 HTML 表单