Django实现将Chatbot响应从一个视图传递到另一个视图
解决方案:将Chatbot响应传递到另一个视图
核心思路
当用户在main.html提交输入后,先在chatbot视图生成响应,通过会话(session) 暂存响应数据,再重定向到sayhi视图,最后在main_2.html中渲染该响应。
1. 修改views.py逻辑
from django.shortcuts import render, redirect def chatbot(request): if request.method == 'POST': # 获取用户输入 user_input = request.POST.get('user_input') # 替换为你的聊天机器人生成响应的实际逻辑 bot_response = f"机器人回复:{user_input}" # 将响应存入session,跨视图传递数据 request.session['bot_response'] = bot_response # 重定向到sayhi视图(需确保urls.py中该视图的name为sayhi) return redirect('sayhi') # GET请求时渲染聊天界面 return render(request, 'main.html') def sayhi(request): # 从session中取出响应数据,默认空字符串防止报错 bot_response = request.session.get('bot_response', '') # 可选:获取后删除session中的数据,避免刷新页面重复显示响应 if 'bot_response' in request.session: del request.session['bot_response'] # 将响应传递给main_2.html模板 return render(request, 'main_2.html', {'bot_response': bot_response})
2. 确认urls.py配置
确保sayhi视图的路由已设置name,方便重定向调用:
from django.urls import path from . import views urlpatterns = [ path('chatbot/', views.chatbot, name='chatbot'), path('sayhi/', views.sayhi, name='sayhi'), # 确保name为'sayhi' ]
3. 调整main.html表单
保证表单以POST方式提交到当前chatbot视图:
<form method="POST"> {% csrf_token %} <!-- Django必须的CSRF令牌 --> <input type="text" name="user_input" placeholder="输入你的问题..." required> <button type="submit">发送</button> </form>
4. 修改main_2.html渲染响应
直接在模板中调用传递过来的bot_response变量:
<h3>机器人回复</h3> <p>{{ bot_response }}</p> <!-- 可选:添加返回聊天界面的按钮 --> <a href="{% url 'chatbot' %}">回到聊天页</a>
内容的提问来源于stack exchange,提问作者Benjamin Hall
相关产品推荐
相关产品推荐

