【发布时间】:2019-01-24 17:08:43
【问题描述】:
我目前有这个视图,它将流派列表发送到模板以填充下拉框:
class GenreSearch(generic.ListView):
template_name = 'games/genresearch.html'
context_object_name = 'genre_list'
def get_queryset(self):
return Genre.objects.order_by("name")
这是模板:
{% if genre_list %}
<div class="btn-group">
<button class="btn btn-secondary btn-lg dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Select Genre</button>
<div class="dropdown-menu scrollable-menu">
{% for genre in genre_list %}
<a class="dropdown-item" href="#">{{ genre.name }}</a>
{% endfor %}
</div>
</div>
{% endif %}
我现在要做的是从这个下拉框中选择一个流派,提交它,然后使用这个视图根据提交的流派返回结果:
class GamesPageByGenre(generic.ListView):
template_name = 'games/allgames.html'
context_object_name = 'game_list'
def get_queryset(self):
#Return games whose genres include the genre id x
return Game.objects.filter(genres__id=10)
因此,如果从下拉框中选择了“动作”类型,请提交此内容,获取类型动作的 ID,然后替换
genres__id=10 与 genres__id=genreID
【问题讨论】:
-
好吧,您定义了一个
<form>,该表单的action=...应该重定向到{% url ... %},即处理该表单的视图的URL 名称,然后您获取数据通过self.request.POST['my_fieldname'],虽然为了搜索,有时会使用GET请求(带GET参数)。
标签: python django django-forms django-templates django-views