You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 05:24:56