Skip to content

Instantly share code, notes, and snippets.

@exit99
Last active August 29, 2015 14:06
Show Gist options
  • Save exit99/c4ef2f045f237c87f292 to your computer and use it in GitHub Desktop.
Save exit99/c4ef2f045f237c87f292 to your computer and use it in GitHub Desktop.
How to send ajax calls with angular via Django
Angular
=======
var myApp = angular.module('myApp', []);
function serializeData( data ) {
if ( ! angular.isObject( data ) ) {
return( ( data == null ) ? "" : data.toString() );
}
var buffer = [];
for ( var name in data ) {
if ( ! data.hasOwnProperty( name ) ) {
continue;
}
var value = data[ name ];
buffer.push(
encodeURIComponent( name ) +
"=" +
encodeURIComponent( ( value == null ) ? "" : value )
);
}
var source = buffer
.join( "&" )
.replace( /%20/g, "+" )
;
return( source );
}
myApp.config(['$httpProvider', function($httpProvider) {
// Set CSRF token for requests
$httpProvider.defaults.xsrfCookieName = 'csrftoken';
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
// Use urlencoded POST bodies
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
$httpProvider.defaults.transformRequest.unshift(function(data, _) {
return serializeData(data);
});
}]);
app.config(function($interpolateProvider) {
$interpolateProvider.startSymbol('{$');
return $interpolateProvider.endSymbol('$}');
});
myApp.controller('myCtrl', function ($scope, $http) {
$http.post("/my-cool-url/" + $scope.wow + "/", {
key: $scope.value
}).success(function() {
... do stuff ...
});
});
View
====
@require_POST
def my_view(request):
value = request.POST['key']
... do more cool stuff ...
return HttpResponse(json.dumps(another_value))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment