2016-04-05 7 views
0

Я использую Django-Угловую и пытаюсь опубликовать форму и получить данные в задней end..I'm удалось добиться этого, но обнаружил, что страницы перезагрузки при сохранении формы. Как мы можем добиться такого же результата без рендеринга страниц?Джанго отправить форму без обновления страницы

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']} 
    }) 
    } 

Пожалуйста, дайте мне знать код выше правильный способ размещения данных? Как мы разместить данные от углового бакэнду (Джанго) без страницы можно обновить

Спасибо заранее ... Любая помощь очень ценится

ответ

0

В домашнем запросе вы не должны отобразить страницу еще раз, а скорее верните строку или некоторый JSON клиенту. Если вы используете версию довольно новый Джанго вы можете сделать что-то вроде этого:

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', {}) 
+0

спасибо за ответ ... но HTML перезагрузки страницы после отправки формы .... Как я должен избежать обновления страницы после отправить форму – Coeus

+0

Если это условие выполняется в коде обработчика: если «применение/JSON» в request.META ['CONTENT_TYPE']: Страница не должна обновляться. Как журнал, когда вы отправляете форму с помощью ajax на угловой стороне. Кажется, что вы делаете. –

+0

Я получаю ........ POST http://127.0.0.1:8000/ 403 (Запрещено) при использовании ответа json ......... что может быть проблемой? – Coeus

0

Replace type="submit с type="button". Тогда вы можете просто вызвать любой метод в бэкэнд с ng-click="ctrl.foo()"

По крайней мере, это то, что я делал до сих пор. Однако, глядя на документы, это не проблема.

+0

@Toxantron ... это все еще перезагружает страницу .... – Coeus

+0

Извините, что слышу. Как я добавил в соответствии с документами, все в порядке. Однако я помню, что читал что-то, что угловатое имеет проблемы, препятствующие отправке браузером формы, если только ему не удастся перехватить вызов. – Toxantron

Смежные вопросы