没有内容匹配给定的查询。 (姜戈)
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/
。因此错误。
我正在尝试完成一个“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/
。因此错误。