没有内容匹配给定的查询。 (姜戈)

No Content matches the given query. (Django)

我正在尝试完成一个“Hackernews 克隆教程(Django Unchained by Tuts+),这样我就可以开始使用 Django,因为我是一个菜鸟。 但是我目前坚持创建 points/vote 系统。我没有将投票应用于特定内容,而是收到 404 错误

Page not found (404)
Request Method: GET
Request URL:    http://localhost:8000/vote/
No Content matches the given query.

这是我的代码。

投票views.py

def vote(request):
  content = get_object_or_404(Content, pk=request.POST.get('content'))
  content.points += 1
  content.save()
  return HttpResponseRedirect('/')

urls.py(在 'collection' 内)

from django.conf.urls import patterns, include, url

urlpatterns = patterns('',

    url(r'^$', 'collection.views.index'),
    url(r'^content/$', 'collection.views.content'),
    url(r'^vote/$', 'collection.views.vote'),
)

index.html

{% extends 'layouts/base.html' %}
{% load staticfiles %}
{% load content_extras %}

{% block head %}
    <script src='{% static 'js/jquery-1.11.3.min.js' %}'></script>
    <script src='{% static 'js/vote.js' %}'></script>
{% endblock head %}

{% block content %}

    <ol>
        {% for content in contents %}
        <li>
            <p>
                <a href='/vote/' id='content-vote-{{ content.id }}'>+rep</a>
                <a href='{{ content.url }}' id='content-title-{{ content.id }}'>{{ content.title }}</a><span class="domain">({{ content.domain }})</span>
            </p>
            <p>
                {{ content.points }}points by {{ content.moderator.username }}{{ content.created_at|age }}
            </p>
        </li>
        {% endfor %}
    </ol>
{% endblock %}

AJAX

    $(document).ready(function() {

    // using jQuery
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;
}
var csrftoken = getCookie('csrftoken');

function vote(content){
    $.ajax({
        type: 'POST',
        url: '/vote/',
        data: {'content': contentID},
        success: function(){
            $("#content-vote-" + contentID).hide():
            $("#content-title-" + contentID).css({'margin-left:'15px});

        },
        headers: {
            'X-CSRFToken': csrftoken
        }
    });
    return false;
}

$('a.vote').click(function(){
    var contentID = parseInt(this.id.split('-')[2]):
    return vote(contentID);
})

});

如有任何帮助,我们将不胜感激!

请注意,该错误表明您正在执行 GET 请求:

Page not found (404)
Request Method: GET
Request URL:    http://localhost:8000/vote/

我认为这是因为在您的 index.html 中,您使用的是:

<a href='/vote/' id='content-vote-{{ content.id }}'>+rep</a>

然后您尝试使用以下方法绑定 onClick

$('a.vote').click(function(){
    var contentID = parseInt(this.id.split('-')[2]):
    return vote(contentID);
})

$('a.vote') 选择器将不起作用,因为没有 <a> 具有 class="vote"。因此,onClick 也不起作用。您正在使用 GET 直接点击 /vote/。因此错误。