gpt4 book ai didi

python - form_Valid 函数在 Django 中是如何工作的?

转载 作者:行者123 更新时间:2023-12-04 10:07:48 26 4
gpt4 key购买 nike

返回行上的这个表单对象是什么,它是提交表单收到的表单对象吗? .因为我们用 return super().form_valid(form) 返回它。
它可以像上下文变量一样访问吗?从由 success_url 表示的模板 .also form_valid 指向 success_url ,既然在做 super() ,它不应该指向父类的 success_url 。但是为什么它会转到ContactView 的success_url。

class ContactView(FormView):
template_name = 'contact.html'
form_class = ContactForm
success_url = '/thanks/'

def form_valid(self, form):
# This method is called when valid form data has been POSTed.
# It should return an HttpResponse.
form.send_email()
return super().form_valid(form)

最佳答案

What is this form object on the return line?


formContactForm Django 构造来验证 POST 请求的实例。例如,您可以通过以下方式从表单中获取清理过的数据:
class ContactView(FormView):
template_name = 'contact.html'
form_class = ContactForm
success_url = '/thanks/'

def form_valid(self, form):
# This method is called when valid form data has been POSTed.
# It should return an HttpResponse.
form.send_email()
print(form.cleaned_data)
return super().form_valid(form)
FormView因此将构造一个 ContactFormrequest.POSTrequest.FILES ,并检查 form.is_valid() .如果是,它会调用 form_valid使用此表单实例。

since were doing super(), shouldnt it point to the success_url of the parent class.



. super()是一个代理对象,它将向上移动 MRO 并因此调用父方法,但该父方法是 implemented as [GitHub] :

    def form_valid(self, form):
"""If the form is valid, redirect to the supplied URL."""
return HttpResponseRedirect(self.get_success_url())

self然而对象仍然是 ContactView对象,所以 self.get_success_url()将返回 success_url .

然而,通常, reverse_lazy [Django-doc]用来。这样你就可以提供 View 的名称,Django 可以自动计算 URL:
from django.urls import reverse_lazy

class ContactView(FormView):
template_name = 'contact.html'
form_class = ContactForm
success_url = reverse_lazy('name-of-thanks-view')

关于python - form_Valid 函数在 Django 中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61486916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com