Python Django命中计数模块的问题
我试图使用该模块来保存不同用户访问教程的次数 模块已按说明正确安装。命中计数模板标记似乎返回了正确的结果Python Django命中计数模块的问题,python,django,Python,Django,我试图使用该模块来保存不同用户访问教程的次数 模块已按说明正确安装。命中计数模板标记似乎返回了正确的结果 <script type="text/javascript"> $(document).ready(function() { {% get_hit_count_javascript for tut_contents %} }); </script> <script type="text/javascript"> /
<script type="text/javascript">
$(document).ready(function() {
{% get_hit_count_javascript for tut_contents %}
});
</script>
<script type="text/javascript">
// returns
$(document).ready(function() {
$.post( '/tutorial/ajax/hit/',
{ hitcount_pk : '1' },
function(data, status) {
if (data.status == 'error') {
// do something for error?
}
},
'json');
});
</script>
问题是当我检查我的调试器时
Failed to load resource: the server responded with a status of 403 (FORBIDDEN)
POST http://waaave.com.dev:8000/tutorial/ajax/hit/ 403 (FORBIDDEN)
(这可能就是为什么hitcount_hit table中没有保存任何内容的原因)因为您将请求作为POST发送,并且获得403禁止,我猜这是csrf令牌的问题,在django中,每个POST请求都需要该令牌 解决它很容易。只需复制getCookie函数,并按照他们的解释将其与标题一起发送,或者简单地将其添加到请求中的数据中,如下所示:
$(document).ready(function() {
$.post( '/tutorial/ajax/hit/',
{ 'hitcount_pk' : '1',
'csrfmiddlewaretoken': getCookie('csrftoken') },
function(data, status) {
if (data.status == 'error') {
// do something for error?
}
},
'json');
});
由于您将请求作为POST发送,并且得到403禁止,我猜这是csrf令牌的问题,在django中,每个POST请求都需要csrf令牌 解决它很容易。只需复制getCookie函数,并按照他们的解释将其与标题一起发送,或者简单地将其添加到请求中的数据中,如下所示:
$(document).ready(function() {
$.post( '/tutorial/ajax/hit/',
{ 'hitcount_pk' : '1',
'csrfmiddlewaretoken': getCookie('csrftoken') },
function(data, status) {
if (data.status == 'error') {
// do something for error?
}
},
'json');
});
另外,除了我的回答,我刚刚发现在你使用的教程的评论中也提到了在请求中添加csrf的主题。谢谢你,yuvi。对于感兴趣的人,请选中此fork:它将插入csrf令牌。但我还有另一个问题,现在它告诉我,Post404(未找到)正在查看您的URL,我怀疑您正在将视图链接到:
http://waaave.com.dev:8000/ajax/hit/
。将其更改为url(r'^tutorial/ajax/hit/$”
,它可能会起作用。非常感谢。它起作用,Django Unchained是最好的电影!:)当然,很高兴能帮上忙=]此外,除了我的答案,我刚刚发现在你使用的教程的评论中也提到了在请求中添加csrf的主题。谢谢你,yuvi。对于感兴趣的人,请选中此fork:它将插入csrf令牌。但我还有另一个问题,现在它告诉我,Post404(未找到)正在查看您的URL,我怀疑您正在将视图链接到:http://waaave.com.dev:8000/ajax/hit/
。将其更改为url(r'^tutorial/ajax/hit/$”
,它可能会起作用。非常感谢。它起作用了,Django Unchained是最好的电影!:)当然,很高兴能帮上忙=]