Я просто студент. У меня есть такой код. Я использую условие Try для пользователя user_membership. Но мне интересно, как я могу решить, что объект 'AnonymousUser' не повторяется ошибка, если пользователь не авторизован .. Я пытался скрыть отключенную кнопку с помощью user.is_authenticated, но он не работает. (Примечание: я думаю, что вход в систему в BookDetail может решить эту проблему, но я хочу, чтобы он был доступен, даже если пользователь не входит в систему)
views.py
def BookDetail(request, id):
most_recent = Book.objects.order_by('-timestamp')[:3]
book= get_object_or_404(Book, id=id)
form = CommentForm(request.POST or None)
if request.method == "POST":
if form.is_valid():
form.instance.user = request.user
form.instance.post = book
form.save()
return redirect(reverse("book-detail", kwargs={
'id': book.pk
}))
try:
user_membership = Customer.objects.get(user=request.user)
except Customer.DoesNotExist:
user_membership = None
context = {
'user_membership': user_membership,
'form': form,
'book': book,
'most_recent': most_recent,
}
return render(request, 'catalog/book_detail.html', context)
и мой book_detail.html
{% if user_membership and user_membership.user == request.user %}
{% for content in book.pages %}
<a href="{{ content.get_absolute_url }}" class="site-btn">Read</a>
{% endfor %}
{% else %}
<button class="site-btn" disabled="disabled">VIP</button>
{% endif %}