кстати а зачем вообще здесь ангулар ? вроди же js вообще нет...
Все из за одной формы: отправить отклик на вакансию. Это всплывающий диалог от бутстрапа. Сейчас попробую объяснить... Мне всегда не нравилось как идет работа с формой внутри всплывающего окна. Вариантов два: первый, ajax'ом вернуть отрендеренную форму, вставить ее в шаблон и перепривязать. Минусы - перепривязка, большой запрос, отдельный шаблон. Второй: отдавать/принимать json и как то привязываться к форме/шаблону и передавать в этом jsone только данные. Минус - трудно привязывать, трудно передавать ошибки, писать каждый раз велосипед. И теперь третий способ: Angular.
======================================
formApp.controller('formController', function($scope, $http) {
$scope.formData = {};
$scope.processForm = function() {
$http({
method : 'POST',
url : '{% url 'catalog_feedback' item.id %}',
data : $.param($scope.formData),
headers : { 'Content-Type': 'application/x-www-form-urlencoded' }
})
.success(function(data) {
if (!data.success) {
// if not successful, bind errors to error variables
$scope.errorName = data.errors.name;
$scope.errorEmail = data.errors.email;
$scope.errorAbout = data.errors.about;
} else {
// if successful, bind success message to message
$scope.errorName = $scope.errorEmail = $scope.errorAbout = false;
$scope.message = data.message;
toastr.success('Ваш отклик был успешно отправлен!')
$('#feedback_dlg').modal('toggle');
}
});
};
})
======================================
<!-- FORM -->
<form name="fb_form" ng-submit="processForm()">
<div class="modal-body">
<div id="name-group" class="form-group name_field" ng-class="{ 'has-error' : errorName }">
<label>Ваше имя</label>
<input type="text" name="name" class="form-control" placeholder="" ng-model="formData.name">
<span class="help-block" ng-show="errorName">{{ errorName.0 }}</span>
</div>
======================================
def feedback(request, item_id):
item = get_object_or_404(Item.active_objects, pk=item_id)
if request.method == 'POST':
form = ApplicationForm(request.POST)
if form.is_valid():
new_feedback = form.save(commit=False)
new_feedback.item = item
new_feedback.save()
return HttpResponse(json.dumps({'success': True, 'message': 'Success'}), content_type="application/json")
else:
return HttpResponse(json.dumps({'success': False, 'errors': form.errors}), content_type="application/json")