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

如何将HTML表单数据传递至另一HTML页面审核存储

解决方案:通过Django后端中转表单数据,实现先审核再保存

1. 修改表单提交目标与视图逻辑(暂存数据到Session)

首先修改question.html的表单提交地址,指向审核页面的视图:

<!-- question.html -->
{% extends 'dependencies.html' %}

{% block content %}

<div class="jumbotron container row">
    <div class="col-md-6">
        <h1>Add Question</h1>
        <div class="card card-body">
           <form action="{% url 'approve_questions' %}" method="POST" id="form">
              {% csrf_token %}
                {{form.as_p}}
                <br>
               <input type="submit" name="Submit">
           </form>
        </div>
    </div>
</div>

{% endblock %}

然后修改views.py中的questions视图,当表单验证通过后,将清洗后的表单数据存入Session,再跳转到审核页面:

# views.py
def questions(request):
    form = addQuestionform()
    if request.method == 'POST':
        form = addQuestionform(request.POST)
        if form.is_valid():
            # 将表单清洗后的数据存入session
            request.session['question_data'] = form.cleaned_data
            # 跳转到审核页面
            return redirect("approve_questions")
    
    context = {'form': form}
    return render(request, 'question.html', context)

2. 修改审核页面视图,读取Session数据并传递给模板

更新views.py中的approve_questions视图,从Session取出暂存的表单数据,传给审核页面模板:

# views.py
def approve_questions(request):
    # 从session获取表单数据
    question_data = request.session.get('question_data')
    if not question_data:
        # 如果没有数据,返回表单页面
        return redirect("questions")
    
    context = {'question_data': question_data}
    return render(request, "approve_questions.html", context)

3. 编写审核页面,展示数据并添加确认保存功能

在approve_questions.html中展示提交的表单数据,并添加一个确认表单,将数据作为隐藏字段提交到保存视图:

<!-- approve_questions.html -->
{% extends 'dependencies.html' %}

{% block content %}
<div class="jumbotron container row">
    <div class="col-md-6">
        <h1>审核问题</h1>
        <div class="card card-body">
            <h3>提交内容预览:</h3>
            <!-- 这里根据你的表单字段,逐个展示数据 -->
            <p><strong>问题标题:</strong>{{ question_data.title }}</p>
            <p><strong>问题内容:</strong>{{ question_data.content }}</p>
            <!-- 其他字段依此类推,根据你的addQuestionform字段调整 -->

            <br>
            <!-- 确认保存的表单 -->
            <form action="{% url 'save_question' %}" method="POST">
                {% csrf_token %}
                <!-- 将数据作为隐藏字段传递 -->
                {% for key, value in question_data.items %}
                    <input type="hidden" name="{{ key }}" value="{{ value }}">
                {% endfor %}
                <input type="submit" value="确认保存" class="btn btn-success">
                <a href="{% url 'questions' %}" class="btn btn-danger">返回修改</a>
            </form>
        </div>
    </div>
</div>
{% endblock %}

4. 添加保存数据的视图

在views.py中新增一个视图,处理审核后的保存请求:

# views.py
def save_question(request):
    if request.method == 'POST':
        # 用POST数据初始化表单
        form = addQuestionform(request.POST)
        if form.is_valid():
            # 正式保存到数据库
            form.save()
            # 发送通知邮件(可选)
            html = render_to_string("notification_email.html")
            send_mail('问题已保存', '提交的问题已通过审核并保存', 'noreply@codewithstein.com', ['example@gmail.com'], html_message=html)
            # 保存后清除session中的数据
            if 'question_data' in request.session:
                del request.session['question_data']
            # 跳转到成功页面或列表页
            return redirect("login")  # 这里可以改成你需要的页面
    
    # 如果不是POST请求或表单无效,返回审核页面
    return redirect("approve_questions")

5. 配置URL路由

确保你的urls.py中添加了对应的路由:

# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('add-question/', views.questions, name='questions'),
    path('approve-question/', views.approve_questions, name='approve_questions'),
    path('save-question/', views.save_question, name='save_question'),
    # 其他路由...
]

关键说明

  • Session的作用:HTTP是无状态协议,Session用来在表单提交、审核两个请求之间暂存数据,避免直接在URL传递敏感或大量数据。
  • 表单字段适配:审核页面的展示字段需要和你的addQuestionform中的字段对应,比如表单有title、content等字段,就用{{ question_data.title }}来展示。
  • 数据安全:使用Django的CSRF保护确保表单提交安全;保存时重新验证表单数据,避免恶意篡改。

内容的提问来源于stack exchange,提问作者user19433213

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:45:33