如何在Django中检索以前在表单中输入的数据?

2024-10-01 07:14:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经编写了用django在html页面上显示表单的代码。每次我点击更新按钮,它都会显示一个空表单。但是我想要的是,如果我之前输入了一些数据,这些数据应该以正常的形式显示。那么我就必须能够编辑它。但是,我每次都收到一张空表格。

在视图.py公司名称:

def update_longterm(request):
if not request.user.is_authenticated:
    return render(request, 'cups4/index.html')
else:
    form = LongtermForm(request.POST or None, request.FILES or None)
    if form.is_valid():
        longterm = form.save(commit=False)
        longterm.user = request.user
        longterm.body = form.cleaned_data['body']
        longterm.save()
        return render(request, 'cups4/detail_longterm.html', {'longterm': longterm})
    context = {
        "form": form,
    }
    return render(request, 'cups4/create_template.html', context)

在模型.py公司名称:

^{pr2}$

在表单.py公司名称:

class LongtermForm(forms.ModelForm):

class Meta:
    model = Longterm
    fields = [ 'body',]

模板:

    {% extends 'base.html' %}
{% block title %}Immediate{% endblock %}
{% block content %}

<div class="container-fluid">

    <div class="row">

        <div class="col-sm-12 col-md-7">
            <div class="panel panel-default">
                <div class="panel-body">
                    <h3>Immediate Goals</h3>
                    {% if error_message %}
                        <p><strong>{{ error_message }}</strong></p>
                    {% endif %}
                    <form class="form-horizontal" role="form" action="" method="post" enctype="multipart/form-data">
                        {% csrf_token %}
                        {% include 'cups4/form_template.html' %}
                        <div class="form-group">
                            <div class="col-sm-offset-2 col-sm-10">
                                <button type="submit" class="btn btn-success">Submit</button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>

    </div>

</div>
{% endblock %}

每次都会显示一个新表单。相反,我希望加载以前的数据。怎么做?提前谢谢!


Tags: 数据pydivform名称表单ifrequest
1条回答
网友
1楼 · 发布于 2024-10-01 07:14:44

可能有两种情况:

  1. 当您更新已经创建的对象时,您可以从数据库中获取它并作为:form = LongtermForm(instance=your_object)
  2. 在另一种情况下,如果您正在添加一个新对象,并且您希望在出现错误时查看用户以前输入的信息。您可以将表单呈现为:

    form = LongtermForm(request.POST or None, request.FILES or None)

在这两种情况下,请确保渲染表格错误表单非字段错误以防在create中手动呈现表单_模板.html,否则django将自动处理它,如果您像这样呈现它,例如{{ form.as_p }}

相关问题 更多 >