0
我試圖創建自己喜歡的按鈕,但遇到一些問題。Django爲每個項目創建一個自定義按鈕
該代碼使用Django與Django和我收到一條錯誤消息,但我不知道什麼是錯的。
這裏是代碼,主要受this post的啓發。
文章\ models.py
class Article(models.Model):
user = models.ForeignKey(User, default='1')
titre = models.CharField(max_length=100, unique=True)
[... some unrelated models ...]
slug = models.SlugField(max_length=40)
likes = models.ManyToManyField(User, related_name="likes")
def __str__(self):
return self.titre
@property
def total_likes(self):
return self.likes.count()
文章\ urls.py
url(r'^like/$', views.like_button, name='like_button'),
文章\ views.py
@login_required(login_url='/user')
def like_button(request):
if request.method == 'POST':
user = request.user
id = request.POST.get('pk', None)
article = get_object_or_404(Article, pk=id)
if article.likes.filter(id=user.id).exists():
article.likes.remove(user)
else:
article.likes.add(user)
context = {'likes_count': article.total_likes}
return HttpResponse(json.dumps(context), content_type='application/json')
(正如你看到的,我想獲得的文章編號,而不是塞)
article.html
<div>
{% for a in article %}
[... some unrelated html ...]
<input type="button" class="like" name="{{ a.id }}" value="Like" />
<p>count : {{ a.total_likes }}</p>
{% endfor %}
</div>
<script>
$('.like').click(function(){
$.ajax({
type: "POST",
url: "{% url 'like_button' %}",
data: {'pk': $(this).attr('name'), 'csrfmiddlewaretoken': '{{ csrf_token }}'},
dataType: "json",
success: function(response) {
alert('Company likes count is now ' + response.count_likes);
},
error: function(rs, e) {
alert(rs.responseText); #No Article matches the given query.
}
});
})
</script>
錯誤說沒有了給定的查詢相匹配。
我爲了做這個工作應該改變什麼?
'提出錯誤'沒有給我們任何信息讓我們來幫助您,圖片也沒有用,您需要編輯您的問題,告訴我們您有什麼錯誤 –
您正在使用點擊事件和'id',但是你有多個按鈕,所以'id'不起作用,你需要使用'class':http://www.w3schools.com/jquery/jquery_selectors.asp –
@Shan gWang對這個問題做了一些修改,它說沒有文章與給定的查詢匹配。 – Lindow