Я близится к завершению танго с Django учебник, я рядом финишную прямую, в процессе создания «как» кнопка:танго с Джанго: Создание «Как» кнопка
http://www.tangowithdjango.com/book17/chapters/ajax.html#add-a-like-button
Что должно случиться:
при нажатии на кнопку запрос AJAX сделан, учитывая наше отображение URL , это вызывает вид like_category, который обновляет категорию и возвращает новое число подобных. Когда запрос AJAX получает ответ, он обновляет части страницы, то есть текст и кнопку. Кнопка #likes скрыта.
Моя кнопка есть, может быть нажата, но не скрывает, после того, как щелкнул, и не фактические приращение числа подобных, и я не знаю, почему, я успешно создал кнопки в предыдущей вводной главе ,
Эти соответствующие фрагменты кода (но дайте мне знать, если есть что-то, что я пропустил, который мог бы быть полезным:
views.py
@login_required
def like_category(request):
cat_id = None
if request.method == 'GET':
cat_id = request.GET['category_id']
likes = 0
if cat_id:
cat = Cat.objects.get(id=int(cat_id))
if cat:
likes = cat.likes + 1
cat.likes = likes
cat.save()
return HttpResponse(likes)
rango-ajax.js
$('#likes').click(function(){
var catid;
catid = $(this).attr("data-catid");
$.get('/rango/like_category/', {category_id: catid}, function(data){
$('#like_count').html(data);
$('#likes').hide();
});
});
category.html
<p>
<strong id="like_count">{{ category.likes }}</strong> people like this category
{% if user.is_authenticated %}
<button id="likes" data-catid="{{ category.id }}" class="btn btn-primary" type="button">
<span class="glyphicon glyphicon-thumbs-up"></span>
Like
</button>
{% endif %}
</p>
models.py
from django.db import models
from django.template.defaultfilters import slugify
from django.contrib.auth.models import User
class Category(models.Model):
name = models.CharField(max_length=128, unique=True)
views = models.IntegerField(default=0)
likes = models.IntegerField(default=0)
slug = models.SlugField(unique=True)
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(Category, self).save(*args, **kwargs)
def __unicode__(self):
return self.name
Я не знаю много о html или javascript/jquery, но мне интересно, неверна ли часть data-catid моего файла category.html (хотя это так, как описано в учебнике). Я спрашиваю об этом просто потому, что notepad ++ не окрашивает этот атрибут так, как это делается для «id» или «class». Мысли кто-нибудь?
Приветствия, Пол
EDIT:
Это то, что моя консоль показывает мне, когда я нажимаю на кнопку, как:
[19/Dec/2014 09:44:20] "GET /rango/like_category/?category_id=1 HTTP/1.1" 500 11493
ли ошибка консоли с консоли Python или консоли браузера? Также проверьте мое второе редактирование. –
Ты зверь! Большое спасибо за вашу помощь aus_lacy, я ценю то время, которое вы здесь сделали, что второе редактирование было решением! – ploo
Без проблем, рад помочь. Я считаю, что это опечатка в Tango с учебником Django, вероятно, вызванная обновлением различных версий. –