Skip to content

Instantly share code, notes, and snippets.

@kindy
Last active May 8, 2017 18:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kindy/9a3488d661e0dab01779 to your computer and use it in GitHub Desktop.
Save kindy/9a3488d661e0dab01779 to your computer and use it in GitHub Desktop.
// more django {{{
// see http://www.daveoncode.com/2013/10/17/how-to-make-angularjs-and-django-play-nice-together/
// }}}
// more angular {{{
angular.module('main', ['ng'])
.config(['$httpProvider', function($httpProvider) {
angular.extend($httpProvider.defaults, {
withCredentials: true,
xsrfHeaderName: 'X-CSRFToken',
xsrfCookieName: 'csrftoken'
});
/* make django's request.is_ajax() happy */
$httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
}])
/* support blob: url, which loadimage generate */
.config(['$compileProvider', function($compileProvider) {
$compileProvider.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|file):|blob:|data:image\//);
}])
.run(['$rootScope', function($rootScope) {
var prototype = $rootScope.constructor.prototype;
if (prototype.hasOwnProperty('$safeApply')) {
return;
}
prototype.$safeApply = function(fn) {
if (this.$root.$$phase) {
return fn && fn(this) || this;
} else {
return fn && this.$apply(fn) || this.$apply();
}
};
}]);
// }}}
/* https://gist.github.com/TurBoss/7b83432749171d919bbd */
/**
* setup JQuery's AJAX methods to setup CSRF token in the request before sending it off.
* http://stackoverflow.com/questions/5100539/django-csrf-check-failing-with-an-ajax-post-request
*/
function getCookie(name)
{
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
$.ajaxSetup({
beforeSend: function(xhr, settings) {
if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
// Only send the token to relative URLs i.e. locally.
xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
}
}
});
@zygimantus
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment