User.views.py 这是Mail / views.py的文件夹,我启动本地开发服务器时出现错误
from Mail.views import sendgrid_mail
content['url'] = input_values["host"] + "/EmailVerification/" +
user.email + '/' + md5_key
message = render_to_string('accountverification.html', content)
# sendMail.delay("[GavaGives] Account created successfully", message,
content['email'])
sendgrid_mail('info', user.email, '[GavaGives] Account created
successfully', message, 'user_offline_donation')
return response("create", "success", [])
Mail.views.py
def sendgrid_mail(from_email, to_email, subject, content, template):
sg = sendgrid.SendGridClient(config('SENDGRID_API_KEY'))
mail = sendgrid.Mail()
mail.add_to(to_email)
mail.set_from(mail_from(from_email))
mail.set_subject(subject)
mail.set_html(content)
mail.add_filter('templates', 'enable', '1')
mail.add_filter('templates', 'template_id', get_templates(template))
sg.send(mail)
Settings.py 这是主项目/settings.py的文件夹,我启动本地开发服务器时出现错误
INSTALLED_APPS = [
'django.contrib.sessions',
'corsheaders', # CORS installation
'django_cron', # celery
'django_crontab', # Cron jobs
'celery',
'djcelery',
'Users',
'Campaign',
'Donor',
'Media',
'Admin',
'Common',
'CommonModules',
'Event',
'Cards',
'Mail'
]
这是我基于django的项目文件夹结构。任何帮助将非常感激。谢谢
<pre>
[projectname]/
├── [admin]/
├── campaign/
├── card/
├── common/
├── commonmodules/
├── donor/
├── event/
├── gavagives/
│ ├── __init__.py
│ ├── cel.py
│ ├── cronjobs.py
│ ├── custom_commands.py
│ ├── settings.py
│ ├── urls.py
│ ├── views.py
│ ├── wsgi.py
├── logs/
├── Mail/
│ ├── mail.py
│ ├── views.py
├── node_modules/
├── manage.py
├── README.rst
├── requirements.txt
├── .env
├── Users/
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── cronjobs.py
│ ├── models.py
│ ├── urls.py
│ ├── validations.py
│ ├── views.py
├── venv/
│ ├── include
│ ├── Lib
│ ├── Scripts
│ ├── tcl
├── License.txt
├── .gitignore
</pre>
答案 0 :(得分:0)
根据django documentation
,应用必须包含models
才能被视为Django应用。基本上,这里是在创建package
,因此您无需将其包括在INSTALLED_APPS
中。要允许项目中的其他应用程序/程序包/模块使用Mail
文件夹中的文件,您需要在该文件夹中创建一个__init__.py
文件。如果文件夹中没有__init__.py
文件,Python将不再在该目录中查找子模块,因此尝试导入该模块将失败。可以在python documentation
中找到有关如何从常规包中导入的更多信息。
答案 1 :(得分:0)
您需要使用 pip 导入邮件python发送网格。
您在Juper笔记本或命令中输入此行。
pip install mail python sendgrid
或
pip3 install mail python sendgrid