@Hideo002

Почему js код в django Static не работает?

Добрых времени суток, помогите понять и решить данную проблему.
Итак, есть кнопка лайка, пришлось воспользоваться jQuery и ajax'ом, так как они позволяют не обновляя страницы изменять данные и взаимодействовать с базой данных. Заранее замечу, что ранее я вообще не работал с js и его фреймворками, я не совсем понимаю в чем проблема.
"index.html"
<button type="submit" class="btn btn-secondary" id="like_{{img_obj.id}}" name="image_like" value="Like">
                            <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-heart-fill" viewBox="0 0 16 16">-->
                                        <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z"/>
                            </svg> <span class="likes-count">{{ img_obj.likes.count }}</span>
</button>
                             <!--  Сам скрипт --!>
                          <script>
                            $('#like_{{img_obj.id}}').click(function(){
                                     $.ajax({
                                              type: "POST",
                                              url: "{% url 'like-image' img_id=img_obj.id%}",
                                              data: {'csrfmiddlewaretoken': '{{ csrf_token }}'},
                                              dataType: "json",
                                              success: function(response) {

                                                    let likeButton = $('#like_{{img_obj.id}}');
                                                    let likesCount = likeButton.find('.likes-count');
                                                    likesCount.text(response['likes_count']);

                                               },
                                               error: function(rs, e) {
                                                      alert(rs.responseText);
                                               }
                                         });
                                   })
                          </script>


Сам код который продемонстрировал я ранее рабочий, но js код находится в inline, и в цикле в шаблоне Django, а когда js код в цикле, то на самой странице в браузере, js код дублируется много раз, что, мягко говоря, не есть хорошо.

В следующем коде я вызываю static и script.js.

"index.html"
{% load static %}
               <button type="submit" class="btn btn-secondary" id="like_{{img_obj.id}}" name="image_like" value="Like">
                            <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-heart-fill" viewBox="0 0 16 16">-->
                                         <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z"/>
                            </svg> <span class="likes-count">{{ img_obj.likes.count }}</span>
                </button>
                <script type="js/javascript" src="{% static 'js/script.js' %}"></script>


"script.js"
$('#like_{{img_obj.id}}').click(function(){
                                     $.ajax({
                                              type: "POST",
                                              url: "{% url 'like-image' img_id=img_obj.id%}",
                                              data: {'csrfmiddlewaretoken': '{{ csrf_token }}'},
                                              dataType: "json",
                                              success: function(response) {

                                                    let likeButton = $('#like_{{img_obj.id}}');
                                                    let likesCount = likeButton.find('.likes-count');
                                                    likesCount.text(response['likes_count']);

                                               },
                                               error: function(rs, e) {
                                                      alert(rs.responseText);
                                               }
                                         });
                                   })


Вот доказательства того что все работает, и script.js виден в нетворке, но почему не работает сам скрипт, я так понимаю, что проблемой является id объекта которого я пытаюсь передать в js.
63d5a5487a357569445909.png

Помогите пожалуйста с js кодом.
  • Вопрос задан
  • 440 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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