Я следовал руководству Mozilla, описанному здесь , и внес некоторые изменения, чтобы превратить его в библиотеку фильмов.
Я хотел бы добавить опцию для пользователя, когда он открывает фильм, чтобы иметь возможность пометить его как "увиденный". Я хотел бы сделать это с помощью ajax, чтобы кнопка, которую нажимал пользователь, также менялась без обновления страницы.
Это модель, используемая для хранения выбора пользователя
class Seenit(models.Model):
username = models.CharField(max_length=150)
movieid = models.ForeignKey('Movie', on_delete=models.CASCADE)
haveyouseenit = models.BooleanField(default=False, null=True, blank=True)
def __str__(self):
return f"{self.username}|{self.movieid.id}"
это от urls.py
re_path(r'^add_to_seen/(?P<pk>.*)', views.Addseen.as_view(), name='add_to_seen')
Это от views.py
class Addseen(generic.DetailView):
model = Seenit
def get(self, request, *args, **kwargs):
if request.is_ajax():
check = get_object_or_404(Seenit, movieid=id, username=request.user.get_username())
if not check.haveyouseenit:
check.haveyouseenit == True
check.save()
return HttpResponse("1")
else:
check.haveyouseenit == False
check.save()
return HttpResponse("0")
и это от movie_details.html
, показывающего кнопку вместе с попыткой, которую я предпринял для кнопки ajax.
<div id="seen">
{% if user.is_authenticated %}
<button class="add_button" id="seen">Have seen</button>
<b style="color: #3b97f4" id="message"></b>
{% if seen %}
<script>
$("#seen").css({"background-color": "#f4b6e0", "color": "white"});
</script>
{% endif %}
{% endif %}
<script>
$(document).ready(function () {
$("#seen").click(function () {
$.get("/add_to_seen/{{ movie.id }}", function (msg) {
if (msg === "1") {
$("#seen").css({"background-color": "#f4f15f", "color": "white"});
$("#message").html("Added to Seen!").fadeIn("fast").fadeOut("slow");
}
if (msg === "0") {
$("#seen").css({"background-color": "white", "color": "black"});
$("#message").html("Deleted from Seen!").fadeIn("fast").fadeOut("slow");
}
});
});
});
</script>
</div>
Кнопка появляется, когда я захожу в фильм, но она ничего не делает. Я очень новичок в django и javascript / ajax, поэтому любую информацию, которую вы можете предоставить, объясните.