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

问题描述 投票:0回答:1

我做了一些研究...并发现了在表单上创建函数以获取字段值的建议...获取表单值

我尝试过这个,但由于某种原因我无法让它工作。我在表单上使用了 clean 函数作为提交过程的一部分,效果很好。这里的区别在于,我本质上是在提交表单之前尝试检查字段值。在本例中,我希望用户单击按钮并查看“批准者”字段中填充的值。我已经让按钮正常工作...但似乎无法填充“批准者”值。它只显示[]。

我在表单上定义了函数...

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

但是当我尝试将模板中的函数调用为

{{ invitees }}

...什么也没有显示。我是否也需要将其定义为上下文变量?

我是否必须使用 Javascript 来完成此操作,还是有办法使用纯 Django/Python 来完成此操作?

如果重要的话我正在使用 ModelForm。

提前感谢您的任何想法。

javascript django django-models django-forms django-templates
1个回答
0
投票

您定义的表单方法仅使其返回的值在表单本身中可用,而不是在模板中可用。如果您想在实际提交之前获取所提交数据的值,并且不使用 JavaScript,则只需使用

Check values
按钮向另一个视图发出 POST 请求,然后该视图将您需要的值作为
HttpResponse
并重新渲染表单。

浏览量
我使用

class-based views
只是因为我喜欢它们。

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}) 

网址

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 更容易。

© www.soinside.com 2019 - 2024. All rights reserved.