baterson
@baterson
python/django

Как добавить лайк батон Django + Ajax?

Привет в учебных целях создаю проект на подобии тостера, хочу добавить кнопку лайка на мою модель коментариев. Делал по гайду из tangowithdjango

apps/questions/models:

class Answer(models.Model):

    text = models.TextField()
    date = models.DateTimeField(default=datetime.datetime.now)
    likes = models.IntegerField(default=0)
    resolve = models.IntegerField(default=0)
    author = models.ForeignKey(CustomUser)
    question = models.ForeignKey(Question)


apps/questions/views:

@login_required
def add_like(request):

    ans_id = None
    if request.method == 'GET':
        ans_id = request.GET['answer_id']

    likes = 0
    if ans_id:
        ans = Answer.objects.get(id=(int(ans_id)))
        if ans:
            likes = ans.likes + 1
            ans.likes = likes
            ans.save()

    return HttpResponse(likes)


apps/questions/ulrs: 
urlpatterns = [
   url(r'add_like/$', views.add_like, name='add_like'),]

question.html:
    {% for answer in answers %}
    <div class="container-fluid no-padding">
        {{ answer.text }}   
    </div>
    <div class="container-fluid  author-question">
    <p>posted: {{ answer.date.day|stringformat:"02d" }}.{{ answer.date.month|stringformat:"02d"}}.{{ answer.date.year}}</p>
    <p>by: {{ answer.author.username }}</p>
    </div>
    {% if user.is_authenticated %}
    <button class="btn btn-default likes-button" type="button"  data-ansid="{{ answer.id }}">
        like | <strong id="like_count">{{ answer.likes }}</strong>
    </button>
    {% endif %}
    {% endfor %}

js/ajax.js:

    $('.likes-button').click(function(){
    var ansid;
    ansid = $(this).attr("data-ansid");
            $.get('/apps/questions/add_like/', {answer_id: ansid}, function(data){
        $('#like_count').html(data);
    $('#likes').hide();
});
});


Ничего не происходит при нажатии, если скопировать js файл в консоль браузера, выдает 404:
GET 127.0.0.1:8000/apps/questions/add_like?answer_id=1 404 (NOT FOUND)

upd: Заработало, нужно было в ajax.js убрать /apps/ перед questions/add_like/ .
Правда работает только когда загружаю код в консоль браузера, хотя js файл подключен.
  • Вопрос задан
  • 2436 просмотров
Решения вопроса 1
У тебя в модель Answer можно поставить бесконечно большое количество лайков, с одного акаунта. Так и должно быть?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы