【发布时间】:2021-01-18 13:48:56
【问题描述】:
我是 Django 新手,我有一个简单的提交按钮,在复选框中选择多个选项后单击该按钮。单击后,结果会显示在不同的页面上。我希望结果显示在同一页面本身(假设在提交按钮下方)或者可能在提交按钮下方的 div 内。
以下是供您参考的代码:
#template - homepage.html
<form method="GET" action="{% url 'book:homepage.html' %}">
{{ genre_form }}
{{ author_form }}
<button type="submit" class="btn btn-primary btn-md submitB">FILTER IT</button>
</form>
#views.py
@require_http_methods(["GET"])
def search_results_view(request):
genre_choices = request.GET.getlist("genre_choices")
author_choices = request.GET.getlist("author_choices")
posts = Post.objects.all()
if genre_choices:
posts = posts.filter(genres__id__in=genre_choices)
if author_choices:
posts = posts.filter(author__id__in=author_choices)
return render(request, 'homepage.html',{'posts': posts})
#urls.py
app_name = 'book'
urlpatterns = [
path('', views.homepage, name='homepage'),
path('results/', search_view, name='post-search-results'),#ignore
path('search/', SearchResultsView.as_view(), name='search_results'), #ignore
]+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
我希望这些信息对您有所帮助。现在,该功能运行良好,但结果显示在不同的页面上。我希望结果显示在主页上,上面的代码是我尝试过的,但它不起作用。
请帮忙。
更新:按照要求,我已在主页本身中添加了输出(我希望结果在其中,但仍然没有帮助)
{% for post in posts %}
{{ post }}
{% endfor %}
【问题讨论】:
-
因为您是 stackoverflow 的新手。我有建议,总是在问题细节中提供代码。对于这个问题,添加前端(html 部分)和后端(django 视图)
-
很抱歉。我现在已经添加了代码和额外的细节。太感谢了。任何帮助表示赞赏。
标签: django django-models django-rest-framework django-views django-templates