python - 将搜索到的查询传递到另一个视图
问题描述
我正在构建一个小而简单的问答网络应用程序,并且我正在尝试实现一个搜索页面。
- 我已经成功创建了一个搜索页面。
当我搜索问题标题时,搜索字段下方的结果显示良好。
但我试图在另一个页面上显示搜索标签的答案。
模型.py
class Questions(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=30,default='')
tags = TaggableManager()
class Answers(models.Model):
quest = models.ForeignKey(Questions,on_delete=models.CASCADE)
视图.py
def search(request):
query = request.GET.get('q')
if query:
objs = Questions.objects.filter(tags__name__icontains=query)
context = {'objs': objs}
return render(request, 'search.html', context)
搜索.html
{% for qas in objs %}
{{ qas.title }}
{% endfor %}
{% for ans in answer %}
{{ ans.ans }}
{% endfor %}
此视图在单页中显示答案(在搜索页面中)。
我会感谢你的帮助。先感谢您
解决方案
首先,您需要将查询添加到search
视图的上下文以链接相应的答案:
def search(request):
...
context = {'objs': objs,'query':query}
return render(request, 'search.html', context)
然后您可以创建search_answer
视图,将查询作为参数传递并Answer
根据该查询过滤模型:
def search_answer(request, query):
if query:
answers = Answers.objects.filter(quest__tags__name__icontains=query)
context = {'answers': answers}
return render(request, 'search_answer.html', context)
更新 urls 文件以传递查询:
urlpatterns = [
path('answers/<query>', search_answer, name='search-answer'),
]
在search.html
您可以链接到答案页面,如下所示:
<form action="{% url 'search' %}" method="get">
<input name="q" type="text">
{% for qas in objs %}
{{ qas.title }}
{% endfor %}
<a href="{% url 'search-answer' query=query %}">See answers</a>
</form>
最后search_answer.html
,您可以通过以下方式显示答案:
{% for answer in answers %}
Question: {{ answer.quest.title }}
Answer: {{ answer.body }}
{% endfor %}
推荐阅读
- matlab - MATLAB 基于类的单元测试:如何传入变量进行测试
- linux - 按字母数字对文件的行进行排序
- ios - 快速避免在 UIPinchGestureRecognizer 中捏三指
- laravel - https 到 http 使用 htaccess laravel 重定向
- java - Java 垃圾收集行为
- python-3.x - 关于查询另一个数据帧以更新当前数据帧值
- javascript - React-Redux:ComponentDidMount() 中只有一个未定义的 Prop
- dart - 如何在颤动中禁用手机后按
- java - 如何将 test/java/application.properties 中的某些字段链接到 main/java/application.properties 中的同一字段?
- corda - corda 1.0 版和 3.2 版有什么区别