Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用django Recpatch和django crispy表单发送电子邮件时出现问题_Python_Html_Django_Django Crispy Forms_Django Recaptcha - Fatal编程技术网

Python 使用django Recpatch和django crispy表单发送电子邮件时出现问题

Python 使用django Recpatch和django crispy表单发送电子邮件时出现问题,python,html,django,django-crispy-forms,django-recaptcha,Python,Html,Django,Django Crispy Forms,Django Recaptcha,我正在尝试使用django-recaptcha应用程序和django-crispy-forms在客户网站上建立联系表单。我的表单数据在POST上没有传递是否有效()。任何帮助都将不胜感激!(使用Python 3.8.5在Windows 10上运行Django 3.11。)据我所知,我已经根据规范设置了所有配置 以下是模型。py: asgiref==3.2.10 astroid==2.4.2 beautifulsoup4==4.9.1 colorama==0.4.3 dj-database-url

我正在尝试使用
django-recaptcha
应用程序和
django-crispy-forms
在客户网站上建立联系表单。我的表单数据在POST上没有传递
是否有效()。任何帮助都将不胜感激!(使用Python 3.8.5在Windows 10上运行Django 3.11。)据我所知,我已经根据规范设置了所有配置

以下是模型。py

asgiref==3.2.10
astroid==2.4.2
beautifulsoup4==4.9.1
colorama==0.4.3
dj-database-url==0.5.0
Django==3.1.1
django-bootstrap4==2.2.0
django-crispy-forms==1.9.2
django-recaptcha==2.0.6
gunicorn==20.0.4
isort==5.5.3
lazy-object-proxy==1.4.3
mccabe==0.6.1
psycopg2==2.8.6
pylint==2.6.0
pytz==2020.1
six==1.15.0
soupsieve==2.0.1
sqlparse==0.3.1
toml==0.10.1
whitenoise==5.2.0
wrapt==1.12.1
来自django.db导入模型的

类联系人电子邮件(models.Model):
created=models.DateTimeField(auto\u now\u add=True)
first_name=models.CharField(空白=False,最大长度=50)
last_name=models.CharField(空白=False,最大长度=50)
email=models.EmailField(空白=False)
phone=models.CharField(最大长度=32,空白=True)
主题=models.CharField(空白=False,最大长度=80)
message=models.TextField(空白=False)
定义(自我):
返回“{}{}:{}({})”.format(
self.first_name,
self.last_name,
自我主体,
self.created.strftime(“%m/%d/%Y,%H:%m:%S UTC”)
)
forms.py

asgiref==3.2.10
astroid==2.4.2
beautifulsoup4==4.9.1
colorama==0.4.3
dj-database-url==0.5.0
Django==3.1.1
django-bootstrap4==2.2.0
django-crispy-forms==1.9.2
django-recaptcha==2.0.6
gunicorn==20.0.4
isort==5.5.3
lazy-object-proxy==1.4.3
mccabe==0.6.1
psycopg2==2.8.6
pylint==2.6.0
pytz==2020.1
six==1.15.0
soupsieve==2.0.1
sqlparse==0.3.1
toml==0.10.1
whitenoise==5.2.0
wrapt==1.12.1
来自django导入表单的

从django.url反向导入
从。模型导入联系人电子邮件
从captcha.fields导入ReCaptchaField
从captcha.widgets导入ReCaptchaV3
从crispy_forms.helper导入FormHelper
从crispy_forms.layout导入提交
类ContactForm(forms.ModelForm):
captcha=ReCaptchaField(小部件=ReCaptchaV3(属性={
“数据主题”:“黑暗”,
“数据大小”:“压缩”
}))
类元:
型号=联系电子邮件
字段=[
“名字”,
“姓”,
“电子邮件”,
"电话",,
“主题”,
"讯息",,
]
定义初始化(self,*args,**kwargs):
超级(ContactForm,self)。\uuuuuuuuuuuuuuuuuuu初始(*参数,**kwargs)
self.fields['captcha'].label=False
self.helper=FormHelper()
self.helper.add_输入(Submit('Submit','Submit',css_class='btn-block'))
self.helper.form_方法='POST'
self.helper.form_action=反向('contact'))
视图.py

asgiref==3.2.10
astroid==2.4.2
beautifulsoup4==4.9.1
colorama==0.4.3
dj-database-url==0.5.0
Django==3.1.1
django-bootstrap4==2.2.0
django-crispy-forms==1.9.2
django-recaptcha==2.0.6
gunicorn==20.0.4
isort==5.5.3
lazy-object-proxy==1.4.3
mccabe==0.6.1
psycopg2==2.8.6
pylint==2.6.0
pytz==2020.1
six==1.15.0
soupsieve==2.0.1
sqlparse==0.3.1
toml==0.10.1
whitenoise==5.2.0
wrapt==1.12.1
导入日期时间
从django.contrib导入消息
从django.core.mail导入发送邮件
从django.http导入HttpResponse
从django.shortcuts导入重定向,渲染
从django.template.loader导入渲染到字符串
从django.url导入解析
从django.utils.html导入strip_标记
from.forms导入ContactForm
从。模型导入联系人电子邮件
def add_now():
now=datetime.datetime.now()
现在就回来
# ...
def联系人(请求):
上下文={
“形式”:ContactForm(),
}
context['now']=add_now()
如果request.method==“GET”:
返回渲染(
要求
模板_name='website/contact.html',
上下文=上下文
)
elif request.method==“POST”:
表单=联系人表单(request.POST)
如果form.is_有效():
first\u name=form.cleaned\u data.get('first\u name'))
last\u name=form.cleaned\u data.get('last\u name'))
email=form.cleanned\u data.get('email'))
phone=form.cleanned\u data.get('phone'))
subject=form.cleanned\u data.get('subject'))
message=form.cleaned\u data.get('message'))
html\u message=render\u to_string(template\u name='website/email.html',上下文={
“名字”:名字,
“姓氏”:姓氏,
“电子邮件”:电子邮件,
“电话”:电话,
“主题”:主题,
“消息”:消息,
})
普通消息=带标签(html消息)
收件人=['***(我的电子邮件地址,用于测试)',]
尝试:
寄信(
主题,,
简单的信息,
“***(客户电子邮件地址)”,
接受者,
html\u message=html\u message
)
联系人\电子邮件=联系人电子邮件(
first_name=first_name,
姓氏=姓氏,
电子邮件=电子邮件,
电话,
主语,
消息=消息
)
联系_email.save()
打印(“消息已发送并保存。”)
messages.add_消息(请求,messages.SUCCESS,“您的电子邮件已发送”。)
例外情况除外,如e:
messages.add_message(请求,messages.ERROR,“您的电子邮件未发送:{}”。格式(e))
最后:
返回重定向('contact')
其他:
返回重定向('contact')
contact.html

asgiref==3.2.10
astroid==2.4.2
beautifulsoup4==4.9.1
colorama==0.4.3
dj-database-url==0.5.0
Django==3.1.1
django-bootstrap4==2.2.0
django-crispy-forms==1.9.2
django-recaptcha==2.0.6
gunicorn==20.0.4
isort==5.5.3
lazy-object-proxy==1.4.3
mccabe==0.6.1
psycopg2==2.8.6
pylint==2.6.0
pytz==2020.1
six==1.15.0
soupsieve==2.0.1
sqlparse==0.3.1
toml==0.10.1
whitenoise==5.2.0
wrapt==1.12.1
{%extends'网站/base.html%}
{%load static%}
{%load crispy_forms_tags%}
{%block description%}{%endblock%}
{%block title%}联系人{%endblock%}
{%block content%}
{%crispy form.helper%}
{%endblock%}
email.html

asgiref==3.2.10
astroid==2.4.2
beautifulsoup4==4.9.1
colorama==0.4.3
dj-database-url==0.5.0
Django==3.1.1
django-bootstrap4==2.2.0
django-crispy-forms==1.9.2
django-recaptcha==2.0.6
gunicorn==20.0.4
isort==5.5.3
lazy-object-proxy==1.4.3
mccabe==0.6.1
psycopg2==2.8.6
pylint==2.6.0
pytz==2020.1
six==1.15.0
soupsieve==2.0.1
sqlparse==0.3.1
toml==0.10.1
whitenoise==5.2.0
wrapt==1.12.1

姓名:{{first_Name}}{{last_Name}}}
电子邮件:{{Email}}
{%if phone%}电话:{{phone}
{%endif%} 主题:{{Subject}}

信息:
{{message}}
和myrequirements.txt

asgiref==3.2.10
astroid==2.4.2
beautifulsoup4==4.9.1
colorama==0.4.3
dj-database-url==0.5.0
Django==3.1.1
django-bootstrap4==2.2.0
django-crispy-forms==1.9.2
django-recaptcha==2.0.6
gunicorn==20.0.4
isort==5.5.3
lazy-object-proxy==1.4.3
mccabe==0.6.1
psycopg2==2.8.6
pylint==2.6.0
pytz==2020.1
six==1.15.0
soupsieve==2.0.1
sqlparse==0.3.1
toml==0.10.1
whitenoise==5.2.0
wrapt==1.12.1