Django 寻找我可以在 object.filter 中使用的变量
Posted
技术标签:
【中文标题】Django 寻找我可以在 object.filter 中使用的变量【英文标题】:Django looking for variable i can use in object.filter 【发布时间】:2021-07-27 13:25:29 【问题描述】:我正在使用 for 循环从数据库中获取数据,并且 html 页面将每个 db 条目显示为不同的卡片,下面有一个按钮。如果我单击该按钮,它应该向我显示一个包含更多信息的 html 页面。在那个页面上,我使用<a href="receptinfo?recepten.name" class="btn btn-info knop">Meer Info</a>
,这很有效。网址显示:localhost/receptinfo?Babi%20pangang
在views.py 中尝试为objects.filter( ) 设置一个过滤器,它使用一个变量。 我试过:recepten = Recept_Info.objects.filter(name='recepten,name'),它没有显示任何错误,但也没有显示任何数据。 当我尝试:recepten = Recept_Info.objects.filter(name=recepten,name) 时,我得到 UnboundLocalError: local variable referenced before assignment error.
如果我写:recepten = Recept_Info.objects.filter(name='Babi pangang') 就可以了。
我的问题是如何使用从 recepten.name 获得的名称作为 object.filter(......)
recept.html
<div class="container">
% for recepten in recepten %
<div class='row'>
<div class="data-aos="zoom-in" data-aos-delay="200">
<div class="card-deck">
<div class="card">
<div class="card-body">
<h4 class="card-title">recepten.name</h4>
<ul>
<li><p class="card-text">Menugang: recepten.menugang</p></li>
<li><p class="card-text">Keuken: recepten.keuken</p></li>
<li><p class="card-text">Bereidingstijd: recepten.bereidingstijd min.</p></li>
<li><p class="card-text">Personen: recepten.aantal_personen</p></li>
<li><p class="card-text">Vegetarisch : recepten.Vegetarisch |yesno:"Ja,Nee" </p></li>
<ul>
</div>
<a href="receptinfo?recepten.name" class="btn btn-info knop">Meer Info</a>
</div>
</div>
% endfor %
</div>
</div>
<div class="end">
</div>
Views.py
def receptinfo(request):
recepten = Recept_Info.objects.filter(name='recepten,name')
return render(request, 'receptinfo.html', 'recepten': recepten)
def __str__(self):
return self.name
【问题讨论】:
你应该在 urls.py 中创建一个 URL 并重定向到视图。看到这个***.com/questions/12812716/… 我不确定这是否是我需要的以及如何实现。我使用 Meer Info 这样的 url 来查看它是否会出现。确实如此,所以当我按下按钮时,recepten.name 应该有一个变量,因为它确实显示在 url 中。我想从页面中获取该变量并在views.py中用作我可以在过滤器中使用的变量。 我尝试过并且没有给出错误但没有输出的是:Meer信息 并在views.py 我把request.GET.get('id') recepten = Recept_Info.objects.filter(name='id') 【参考方案1】:好的,我想通了。
HTML 中的按钮
<a href="receptinfo?id=recepten.name" class="btn btn-info knop">Meer Info</a>
在 Views.py 中
naam = request.GET.get('id')
recepten = Recept_Info.objects.filter(name=naam)
【讨论】:
以上是关于Django 寻找我可以在 object.filter 中使用的变量的主要内容,如果未能解决你的问题,请参考以下文章
使用 PostgreSQL 在 Django 中寻找读写锁,例如,SELECT FOR SHARE