Здравствуйте! Делаю SPA приложение на Django + Angular. Встала задача сделать форму обратной связи, чтобы в дальнейшем отправлять данные из неё в Джанго через $http сервис Ангуляра, т.е, чтобы страница не перезагружалась при отправке.
Попробовал сначала реализовать форму без Ангуляра, с такой вьюхой:
def new_message(request):
if request.method == 'POST':
form = MessageForm(request.POST)
if form.is_valid():
form.save()
form = MessageForm()
return render(request, 'main/extra.html', {"form": form})
Всё работало нормально, но когда подключил Ангуляр начались проблемы: Он должен отправлять объект message в json виде, но вместо этого из-за того, что контроллер возвращает возвращает
render(request, 'main/extra.html', {"form": form})
в объект message попадает страница extra.html, вместо данных из формы, если же убрать render(), то Джанго выдаст ошибку
var app = angular.module('uniApp', ['ngRoute']);
angular.
module('uniApp').
config(['$locationProvider', '$routeProvider',
function config($locationProvider, $routeProvider) {
$locationProvider.html5Mode(true);
$routeProvider.
when('/', {
controller : 'mainCtrl',
templateUrl : 'media/views/main.html'
}).
when('/case/:id', {
controller : 'detailCtrl',
templateUrl : 'media/views/detail.html'
}).
otherwise('/');
}
]);
app.controller('mainCtrl', function ($scope, $http) {
$http.get('/api/v0/cases/').success(function(data){
$scope.cases = data;
});
});
app.controller('detailCtrl', function($scope, $http, $routeParams) {
var cid = $routeParams["id"]
$http.get('/api/v0/cases/' + cid + '/').success(function(data){
$scope.case = data;
});
});
app.controller('formCtrl', function($scope, $http) {
$scope.save = function(message, messageForm) {
console.log($scope.message)
if (messageForm.$valid){
$http.post('/message/', message).success(function(message){
console.log(message)
});
}
else {
console.log('error')
}
};
});
Ясно, что обычный вью не подходит для этой задачи, вопрос в том, как реализовать такой функционал?