मैं Django में एक बहुत ही बुनियादी AJAX अनुरोध लिखने की कोशिश कर रहा हूं, और मुझे क्रोम देव और Django दोनों कंसोल में 403 वर्जित त्रुटि मिल रही है। मैंने दूसरे दिन एक समान प्रश्न पोस्ट किया है और @csrf_exempt सहित सभी प्रस्तावित समाधानों को आजमाया है (अगर यह एक सीएसआरएफ मुद्दा भी है तो बाहर निकलने के लिए), मैंने csrfmiddlewaretoken सहित कोशिश की है: '{{csrf_token}}' AJAX POST अनुरोध में (डेटा के नीचे), इसने इस मुद्दे को हल नहीं किया। मेरा कोड यहाँ है।AJAX अनुरोध में @csrf_exempt का उपयोग करते समय मुझे 403 निषिद्ध त्रुटि क्यों मिल रही है?
def profile_listview(request, username,
template_name=userena_settings.USERENA_PROFILE_DETAIL_TEMPLATE,
extra_context=None, **kwargs):
user = get_object_or_404(get_user_model(),
username__iexact=username)
fullsalelist = Entry.objects.filter(author__username__iexact=username)
@csrf_exempt
def delete_object(request):
if request.is_ajax():
print "request is ajax"
object_name = request.POST.get('entryname')
targetobject = Entry.objects.get(headline=object_name)
if request.user.username == targetobject.author:
targetobject.delete()
print "hello"
return HttpResponseRedirect('/storefront/')
और टेम्पलेट में AJAX कोड: ध्यान देने योग्य
<script type="text/javascript">
var my_app = {
username: "{{ request.user.username }}"
};
</script>
<script>
$(document).ready(function() {
$(".delete_button").click(function() {
var id = $(this).attr('id');
$.ajax({
type: "POST",
url: "/accounts/" + my_app.username + "/listview/",
data: { entryname:id },
});
return false;
});
});
</script>
यूआरएल
(r'^accounts/(?P<username>[\@\.\w-]+)/listview/$', profile_listview),
चीजें:
मैं CSRF है मिडलवेयर अपनी सेटिंग्स
में चालूjQuery AJAX कोड, यूआरएल और डेटा के अंदर दोनों सही जानकारी
जब मैं हटाएँ बटन पर क्लिक भेजने हैं, मैं 403 निषिद्ध त्रुटि मिलती है।
प्रिंट "अनुरोध AJAX" कंसोल (या कहीं भी) में प्रिंट नहीं करता है।
मैं भी उलझन में हूं क्योंकि मुझे विवादित जानकारी मिल रही है। मुझे बताया गया था कि मुझे जावास्क्रिप्ट (https://docs.djangoproject.com/en/1.7/ref/contrib/csrf/) के माध्यम से csrf मान जोड़ना चाहिए। यह मुझे 2 प्रश्नों के साथ छोड़ देता है। 1. csrfmiddlewaretoken जोड़ने से यह अलग कैसे है: '{{csrf_token}}' मेरे POST अनुरोध में? और 2. सबसे महत्वपूर्ण बात यह है कि @csrf_exempt प्रकार का उपयोग करते समय मुझे अभी भी 403 त्रुटि मिलती है, यह एक महत्वपूर्ण बिंदु बनाते हैं?
लेकिन आप अपने अनुरोध में सीएसआरएफ टोकन नहीं भेज रहे हैं। –
csrf_exempt सजावट को जोड़ना उस प्रतिबंध को हटा देना चाहिए, लेकिन यह अजीब बात है कि 403 वापस कर दिया जाएगा। – Brandon
एक अलग नोट पर, आपका जावास्क्रिप्ट कोड सर्वर-साइड 'HttpResponseRedirect' को संसाधित करने में सक्षम नहीं होगा।आपको उस स्ट्रिंग के रूप में उसे वापस पास करने की आवश्यकता होगी और फिर: 'top.location = json.redirect_url' उदाहरण के लिए। – Brandon