Здравствуйте всем.
Хочу спросить мнения можно ли писать так, как я ниже покажу, либо это я наговнокодил?
Причина проста, я сейчас изучаю jQuery и вот только до такой реализации додумался.
Задача тривиальная - обновить лайк без перезагрузки страницы.
article_page.html -
...
<p class="articlesLikes">
<a class="articlesLikesRef" onclick="return loadLike()"><img src="{% get_static_prefix %}myapp/images/{{ pic_of_like }}.png"/> {{ article.likes }}</a>
</p>
...
жмакает пользователь на ссыль и ...
<script type="text/javascript">
function loadLike(){
$('.articlesLikes').load( "{% url 'myapp:add_like' article.id %}" );
};
</script>
как видите подоспевает jquery, который вызывает вьюшку
def add_like(request, article_id):
article = get_object_or_404(Article, id=article_id)
article.likes += 1
article.save()
return render_to_response('myapp/like.html', {'article': article})
в urls все вот так
url(r'^add_like/(?P<article_id>\d+)/$', views.add_like, name = 'add_like'),
вьюшка как вы видели отдает like.html, который по сути равен содержимому внутри тега p class='articleLikes' только пикча другая ну и переменная article.likes уже "пропатчена".
like.html
<a class="articlesLikesRef"><img src="{% static 'myapp/images/like_checked.png' %}"/> {{ article.likes }}</a>
Вот! Это сейчас уже работает.
Не берите в рассчет что я смешал вызов функции через чистый js, а в нем jQuery (это условности. переделаю и вызов на jQuery), ну и дополнительные моменты вроде сохранения значения для клиента и предупреждение накрутки счетчика (это после).
Мне интересна допустимость и разумность самого метода использования связки django + ajax вот так. Может можно все сделать проще?