Код внутри шаблона Django if statement появляется постоянно
У меня есть шаблон Django, который содержит сообщение с переменной, но слова, которых нет в переменной, появляются постоянно. Я думаю, что это как-то связано с условной переменной if closeListing == True
. Я явно указываю, когда я хочу, чтобы оно было True, поэтому я не знаю, что происходит
views.py
@login_required(login_url='login')
def listing(request, id):
#gets listing
listing = get_object_or_404(Listings.objects, pk=id)
sellar = listing.user
#close listing code
if sellar == request.user:
closeListingButton = True
else:
closeListingButton = False
closeListing = ''
try:
has_closed = get_list_or_404(CloseListing, Q(
user=request.user) & Q(listings=listing))
except:
has_closed = False
if has_closed:
closeListing = False
else:
closeListing = True
if request.method == "POST":
#close listing code
if request.POST.get('close'):
CloseListing.objects.create(user=request.user,
listings=listing)
closeListing = True
closeListingButton = False
add_or_remove_watchlist = True
winning_bid = Bids.objects.aggregate(Max('bid'))
winning_bid = Bids.objects.latest('bid')
winner = winning_bid.user
return render(request, "auctions/listing.html",{
"auction_listing": listing,
"comments": comment_obj,
"bids": bid_obj,
"closeListingButton": closeListingButton,
"closeListing": closeListing,
"closedMessage": "This listing is closed.",
"winner": winner
})
return render(request, "auctions/listing.html",{
"auction_listing": listing,
"closeListingButton": closeListingButton,
"closeListing": closeListing
})
listing.html
{% if closeListing == True %}
<div>{{ closedMessage }}
<br>
{{ winner }} has won the auction!
</div>
{% endif %}
Если предполагаемое поведение состоит в том, чтобы closeListing = True
иметь, когда запрос get_list_or_404(CloseListing, Q(user=request.user) & Q(listings=listing))
вернул некоторый результат или если request.POST.get('close')
, то, вероятно, следует изменить здесь:
if has_closed:
closeListing = False
else:
closeListing = True
То...
try:
# Returned some result
has_closed = get_list_or_404(CloseListing, Q(user=request.user) & Q(listings=listing))
except:
has_closed = False
# Modify here...
# You're saying here if any results were returned then set closeListing = True
if has_closed:
closeListing = True
else:
closeListing = False
Я вижу, что у вас уже есть closeListing = True
, если request.POST.get('close')
не None
, что уже хорошо.
Тогда в вашем шаблоне вы можете иметь:
{% if closeListing %}
<div>
{{ closedMessage }}
<be>
{{ winner }} has won the auction!
</div>
{% endif %}