Django 如何在表单提交之前获取django表单的值并将其显示给用户

Django 如何在表单提交之前获取django表单的值并将其显示给用户

问题描述

我进行了一些研究…并找到了一种建议,在表单上创建一个函数来获取字段的值… 获取表单值

我尝试了这个方法,但出于某种原因,我无法让它工作。我已经在提交过程中使用了表单的clean函数,而且效果非常好。这里的区别在于,我实际上是在表单被提交之前尝试检查字段值。我希望用户点击按钮后能看到这种情况下填充在”approvers”字段中的值。我已经让按钮工作了…但似乎无法让”approvers”的值填充。它只显示[]。

我在我的表单上定义了这个函数…

def get_invitee_name(self):
    invitees = self.cleaned_data.get('approvers')
    return invitees

但是当我尝试在我的模板中调用这个函数时

{{ invitees }}

…没有显示任何内容。我需要将这个定义为上下文变量吗?

我是否需要使用JavaScript来完成这个操作,或者有没有一种纯Django/Python的方法来完成这个操作?

如果有关系,我正在使用一个模型表格。

解决方案

您定义的表单方法仅使其返回的值在表单本身中可用,而不是在模板中可用。如果您想在实际提交数据之前获取提交的数据的值,并且不想使用JavaScript,您可以简单地使 Check values 按钮向另一个视图发出POST请求,该视图然后将您需要的值作为一 HttpResponse 返回,并重新渲染表单。

视图

我使用 类视图 只是因为我喜欢它们。

from django.views.generic import View

class GetValuesView(View):
    def post(self, request, *args, **kwargs):
        form = YourForm(request.POST) # The form needs to be rendered with all the data that was entered. 
        approvers = request.POST.get("approvers") # or whatever value you gave to its name attribute 
        return render(request, "path-to-template-rendering-your-form", {"form": form, "approvers": approvers}) 

urls

urlpatterns = [
... 
path("get-values/", GetValueView.as_view(), name="get-values") 
]

html

然后在表单内部,

<form method="post">
... 
<button type="submit" formaction="{ url 'get-values' }" value="Get values"/>
</form>

虽然这样做可以实现,但我认为直接使用JavaScript更简单。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程