簡體   English   中英

Django提交表單而不刷新頁面

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM