[英]Django submit form without page refresh
我正在使用Django-Angular並嘗試發布表單並在后端獲取數據。我能夠實現這一點,但是發現頁面在保存表單時正在重新加載 。 沒有頁面渲染,如何實現相同的效果?
表格
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']}
})
}
請讓我知道上面的代碼是發布數據的正確方法嗎? 我們如何在不刷新頁面的情況下 將數據從angular發布到后端(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()"
調用后端中的任何方法
至少那是我到目前為止所做的。 然而,查看文檔表明這不是問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.