【发布时间】:2016-09-16 21:19:45
【问题描述】:
我无法解决 CSRF 检查的问题。你能告诉我我需要做什么吗? 这是来自views.py的函数:
@login_required
def like_day(request):
if request.method == 'POST':
if 'day_id' in request.POST:
day_id = request.POST['day_id']
if day_id:
day = Day.objects.get(id=int(day_id))
likes = day.likes + 1
day.likes = likes
day.save()
return HttpResponse(likes)
这是 AJAX 请求:
$(document).ready( function(){
$('#likes2').click(function(){
var catid;
protect
catid = $(this).attr("data-catid");
$.post('/friends_plans/like_day/', {day_id: catid}, function(data){
$('#like_count').html(data);
$('#likes2').hide();
});
});
});
我尝试使用@ensure_csrf_cookie 装饰器来实现该功能,但没有帮助。我已尝试将此添加到我的代码中:
$.ajaxSetup({
data: {csrfmiddlewaretoken: '{{ csrf_token }}' },
});
它也没有帮助。
我已经按照文档中的描述完成了:https://docs.djangoproject.com/en/1.7/ref/contrib/csrf/
但随后出现错误$.cookie is not a function。为了解决这个问题,我将 csrf cookie 插件下载到我的静态目录或将其添加到我的模板<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>,但仍然是同样的错误。
【问题讨论】:
标签: ajax django cookies http-post django-csrf