ImportError:没有名为Mail python sendgrid的模块

时间:2019-05-27 05:58:28

标签: python django

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>

2 个答案:

答案 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