【发布时间】:2016-01-05 07:43:06
【问题描述】:
我在 context_processors.py
中有这段代码class ContactFormView(FormView):
form_class = ContactForm
template_name = "blog/contact.html"
success_url = "/contact/"
def form_valid(self,form):
contact_name = form.cleaned_data.get('contact_name')
contact_email = form.cleaned_data.get('contact_email')
form_content = form.cleaned_data.get('content','')
try:
send_mail(contact_name,form_content,contact_email,[settings.EMAIL_HOST_USER], fail_silently=False)
except BadHeaderError:
return HttpResponse('Invalid Header Found')
return super(ContactFormView,self).form_valid(form)
我想通过使用上下文处理器将其包含在所有视图中。我收到此错误:
TypeError at /
__init__() takes exactly 1 argument (2 given)
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 1.8.7
Exception Type: TypeError
Exception Value:
__init__() takes exactly 1 argument (2 given)
Exception Location: C:\Python27\lib\site-packages\django-1.8.7-py2.7.egg\django\template\context.py in bind_template, line 241
Python Executable: C:\Python27\python.exe
Python Version: 2.7.10
如何在所有模板中传递这个表单?
【问题讨论】:
-
而不是将图像发布到错误中发布实际文本以及重现它所需的代码(即堆栈跟踪)
-
好吧,作为一个新手,您的建议是积极的..
-
这个问题完全没有意义。视图是视图,而不是上下文处理器。
-
@Daniel Roseman 为什么?我想在所有模板中包含基于类的表单,所以我将它包含在 context_processor 中以访问每个模板!!
-
但是上下文处理器不是视图。上下文处理器是一个函数,它接受一个请求并返回一个字典以添加到上下文中;视图要复杂得多,并返回完整的 HTTP 响应。
标签: django django-forms django-views