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

Django实现用户输入内容留存并追加至列表的方案咨询

嘿,我来帮你实现这个需求!要让用户的输入留存并能追加显示,核心是要把历史输入记录存起来——因为HTTP是无状态的,咱们用Django内置的**会话(Session)**就能轻松搞定,不用先折腾数据库,非常适合新手入门。

下面是具体的修改步骤:

1. 更新 views.py

我们需要从会话里读取历史输入,把新输入追加进去,再存回会话,最后把历史记录传给模板:

def user(request):
    # 从会话获取历史输入列表,没有的话初始化空列表
    history = request.session.get('input_history', [])
    
    if request.method == 'POST':
        original = request.POST.get('originaltext', '').strip()
        if original:  # 过滤空输入,避免添加空内容
            history.append(original)
            # 更新会话中的历史记录
            request.session['input_history'] = history
    
    # 把历史记录和当前输入值传给模板(输入框会保留上次内容)
    return render(request, 'posts/home.html', {
        'history': history,
        'original': request.POST.get('originaltext', '')
    })

2. 修改 home.html 模板

在模板里循环遍历历史记录,把每条输入显示成列表,同时优化输入框的体验:

<!DOCTYPE html>
<html>
<head>
<title>Django Project</title>
</head>
<body>
<h1>User Input</h1>
<form action="{% url 'home' %}" method="POST">
    <!-- 输入框保留上次提交的内容 -->
    <input type="text" name="originaltext" value="{{ original }}" />
    {% csrf_token %}
    <br />
    <input type="submit" value="Try" />
</form>

<br />
<h3>Input History</h3>
{% if history %}
    <ul>
        {% for item in history %}
            <li>{{ item }}</li>
        {% endfor %}
    </ul>
{% else %}
    <p>No input yet. Enter something above!</p>
{% endif %}
</body>
</html>

关键细节说明

  • 会话存储:Django的Session会在用户浏览器存一个标识cookie,对应服务器端的临时数据,用户关闭浏览器后数据会自动过期,刚好适合这种临时的输入留存需求。如果想要永久保存,可以后续学习Django的ORM,创建数据库模型来存储记录。
  • 过滤空输入:用strip()去掉输入的前后空格,再判断是否为空,避免用户提交空内容到历史列表里。
  • 输入框留存内容:把original赋值给输入框的value属性,用户提交后输入框还能看到刚才的内容,体验更友好。

检查配置(默认已开启)

确保你的Django项目已经开启了会话功能(新建项目默认都有):

  • settings.py的INSTALLED_APPS里有'django.contrib.sessions'
  • MIDDLEWARE里有'django.contrib.sessions.middleware.SessionMiddleware'

这样修改后,每次提交新内容,历史列表就会自动追加,所有输入都会保留在页面上啦!

内容的提问来源于stack exchange,提问作者Ayoub El Aich

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:10:14