Maison  >  Article  >  interface Web  >  Solution à l'erreur 403 lors de l'utilisation des données de publication jquery ajax dans Django

Solution à l'erreur 403 lors de l'utilisation des données de publication jquery ajax dans Django

亚连
亚连original
2018-05-25 09:32:573717parcourir

Dans Django, lors de l'utilisation des données de publication jquery ajax, une erreur 403 se produira. Est-ce que quelqu'un sait comment la résoudre ? Je vais partager deux solutions avec vous ci-dessous. Les amis qui en ont besoin peuvent s'y référer

. Dans Django, lors de l'utilisation des données de publication jquery ajax, une erreur 403 se produira

Méthode 1 :

Si jQuery est utilisé pour traiter ajax, Django j'ai directement envoyé un morceau de code pour résoudre le problème. Mettez-le dans un fichier js séparé et introduisez-le dans la page html. Notez que ce fichier js doit être introduit après l'introduction du fichier jquery js

$(document).ajaxSend(function(event, xhr, settings) { 
  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 + &#39;=&#39;)) { 
          cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); 
          break; 
        } 
      } 
    } 
    return cookieValue; 
  } 
  function sameOrigin(url) { 
    // url could be relative or scheme relative or absolute 
    var host = document.location.host; // host + port 
    var protocol = document.location.protocol; 
    var sr_origin = &#39;//&#39; + host; 
    var origin = protocol + sr_origin; 
    // Allow absolute or scheme relative URLs to same origin 
    return (url == origin || url.slice(0, origin.length + 1) == origin + &#39;/&#39;) || 
      (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + &#39;/&#39;) || 
      // or any other URL that isn&#39;t scheme relative or absolute i.e relative. 
      !(/^(\/\/|http:|https:).*/.test(url)); 
  } 
  function safeMethod(method) { 
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); 
  } 
  if (!safeMethod(settings.type) && sameOrigin(settings.url)) { 
    xhr.setRequestHeader("X-CSRFToken", getCookie(&#39;csrftoken&#39;)); 
  } 
});

Méthode 2 :

Ajouter @ avant la vue qui gère les données de publication Le csrf_exempt décorateur

tel que

@csrf_exempt 
def profile_delte(request): 
  del_file=request.POST.get("delete_file",&#39;&#39;)

est ce que j'ai compilé pour vous, j'espère que cela vous sera utile à l'avenir.

Articles associés :

Explication détaillée d'ajax + jtemplate pour implémenter la pagination dynamique

Une implémentation simple d'Ajax montrant la progression lors de la requête

JQuery Ajax génère dynamiquement un tableau

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn