当你的'item'每次刷新更改时,如何从 Django 上的按钮与数据库进行交互(Python)



我正在寻找一种方法来更改数据库中的"项"(页面上显示的项(。但首先,我应该在页面上有两个按钮。其次,显示的"项目"是数据库中的随机项。所以问题是:我如何才能更改DB中的项目信息,因为我知道按钮会刷新页面以在请求中发送它。(我提醒你,我的物品是随机的,所以每次刷新都会更改(

因此,我需要一种方法来更改它或随机化页面,但不是在我发送POST请求时

我的看法.py:(混乱,但它是好的xD(

def review(request):
loop = True
i = 0
while loop and i < len(Cartes.objects.filter(user_id_shared_id__exact=request.user.id).values_list('pk', flat=True))*4:
i = i + 1
pks = Cartes.objects.filter(user_id_shared_id__exact=request.user.id).values_list('pk', flat=True)
if len(pks) == 0:
loop = False
return redirect('/create/')
random_pk = choice(pks)
card = Cartes.objects.get(pk=random_pk)
obj, created = Review.objects.get_or_create(
card_id_id=card.id,
user_id_id=request.user.id,
)
print(card.id, "///", obj.id)
date_3_days = obj.review_date + datetime.timedelta(days=3)
date_7_days = obj.review_date + datetime.timedelta(days=7)
date_21_days = obj.review_date + datetime.timedelta(days=21)
date_42_days = obj.review_date + datetime.timedelta(days=42)
if obj.review_level == 1:
loop = False
elif obj.review_level == 2 and datetime.date.today() >= date_3_days:
loop = False
elif obj.review_level == 3 and datetime.date.today() >= date_7_days:
loop = False
elif obj.review_level == 4 and datetime.date.today() >= date_21_days:
loop = False
elif obj.review_level == 5 and datetime.date.today() >= date_42_days:
loop = False
else:
loop = True
if request.method=='POST' and 'btnform1' in request.POST:
print(card.id)
obj.review_level = 1
obj.review_date = datetime.date.today()
obj.save()
return redirect('review')
else:
pass
if request.method=='POST' and 'btnform2' in request.POST:
print(card.id)
obj.review_date = datetime.date.today()
if obj.review_level != 5:
obj.review_level = obj.review_level + 1
obj.save()
return redirect('review')
else:
pass
context = {'card':card}
return render(request, 'card/review.html', context)

我的模板:

<body>
<div class="page">
<h1>{{ card.title }}</h1>
<div class="carte">
<p> {{ card.content }} </p>
<form method='POST'>
{% csrf_token %}
{{form1.as_p}}
<button type="submit" name="btnform1" value={{obj}}>Je n'ai pas trouvé :'c</button>
</form>
<form method='POST'>
{% csrf_token %}
{{form2.as_p}}
<button type="submit" name="btnform2">J'ai trouvé !</button>
</form>
</div>
</div>
</body>

我找到了一种方法:创建一个随机的缓冲区页面。然后重定向到你想显示你随机化的东西的页面。你可以用一个动态url来实现。

要重定向,请像一样使用它

return重定向('review',myUrlArg=viewArg(

希望它能帮助

最新更新