我做了一些研究...并发现了在表单上创建函数以获取字段值的建议...获取表单值
我尝试过这个,但由于某种原因我无法让它工作。我在表单上使用了 clean 函数作为提交过程的一部分,效果很好。这里的区别在于,我本质上是在提交表单之前尝试检查字段值。在本例中,我希望用户单击按钮并查看“批准者”字段中填充的值。我已经让按钮正常工作...但似乎无法填充“批准者”值。它只显示[]。
我在表单上定义了函数...
def get_invitee_name(self):
invitees = self.cleaned_data.get('approvers')
return invitees
但是当我尝试将模板中的函数调用为
{{ invitees }}
...什么也没有显示。我是否也需要将其定义为上下文变量?
我是否必须使用 Javascript 来完成此操作,还是有办法使用纯 Django/Python 来完成此操作?
如果重要的话我正在使用 ModelForm。
提前感谢您的任何想法。
您定义的表单方法仅使其返回的值在表单本身中可用,而不是在模板中可用。如果您想在实际提交之前获取所提交数据的值,并且不使用 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 更容易。