Django问答Web应用如何将搜索标签对应的答案跳转至独立页面展示
解决方案
要实现搜索页仅展示问题标题、点击跳转独立新页查看对应答案,按以下步骤修改即可:
1. 补全Answers模型(若未完成)
你当前的Answers模型缺少存储答案内容的字段,先补充字段后执行python manage.py makemigrations和python manage.py migrate更新数据库:
# models.py class Answers(models.Model): quest = models.ForeignKey(Questions,on_delete=models.CASCADE) ans = models.TextField(default='') # 新增存储答案内容的字段
2. 新增问题详情页路由
在项目的urls.py中添加详情页的访问路由,绑定问题ID参数:
# urls.py urlpatterns = [ # 原有其他路由 path('question/<int:qid>/', views.question_detail, name='question_detail'), ]
3. 新增详情页视图函数
在views.py中添加详情页的处理逻辑,根据传入的问题ID查询对应问题和关联答案:
# views.py 新增以下代码 def question_detail(request, qid): # 查询对应问题 question = Questions.objects.get(id=qid) # 查询该问题对应的所有答案 answers = Answers.objects.filter(quest_id=qid) context = {'question': question, 'answers': answers} return render(request, 'question_detail.html', context)
4. 修改搜索页模板
删除搜索页中遍历展示答案的代码,将问题标题改为跳转链接,添加target="_blank"实现新页面打开:
<!-- search.html 修改后内容 --> {% for qas in objs %} <a href="{% url 'question_detail' qas.id %}" target="_blank">{{ qas.title }}</a> <br> {% endfor %} <!-- 原来遍历answer的代码直接删除即可 -->
5. 新建问题详情页模板
在模板目录下新建question_detail.html,用于展示问题详情和对应答案:
<!-- question_detail.html --> <h1>{{ question.title }}</h1> <p>提问用户:{{ question.user.username }}</p> <h3>答案:</h3> {% for ans in answers %} <div>{{ ans.ans }}</div> <hr> {% empty %} <p>该问题暂无答案</p> {% endfor %}
内容的提问来源于stack exchange,提问作者Lars
相关产品推荐
相关产品推荐

