ModuleNotFoundError: нет модуля с именем «dota» - PullRequest
0 голосов
/ 03 марта 2020

Я получаю следующую ошибку при запуске моего Django проекта:

Traceback (most recent call last):
  File "send_email.py", line 5, in <module>
    from dota.settings import SECRET_KEY, DOMAIN, SENDGRID_API_KEY
ModuleNotFoundError: No module named 'dota'

Хорошо, я создал файл .env в root моей папки. Я экспортировал все и сделал настройку в файле settings.py в директории dota, которая является главной директорией, где находится файл settings.py.

settings.py:

SENDGRID_API_KEY = os.getenv('SENDGRID_API_KEY')
EMAIL_HOST = os.getenv('EMAIL_HOST')
EMAIL_HOST_USER = os.getenv('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = SENDGRID_API_KEY
EMAIL_PORT = os.getenv('EMAIL_PORT')
EMAIL_USE_TLS = os.getenv('EMAIL_USE_TLS')
DOMAIN = os.getenv("DOMAIN")

После этого я попытался импортировать это, включая секретный ключ, который я хранил как переменную env. Вот код:

send_mail.py:

import jwt
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail, Email
from django.template.loader import render_to_string
from dota.settings import SECRET_KEY, DOMAIN, SENDGRID_API_KEY


def send_confirmation_email(email, username):
    token = jwt.encode({'user': username}, SECRET_KEY,
                       algorithm='HS256').decode('utf-8')
    context = {
        'small_text_detail': 'Thank you for '
                             'creating an account. '
                             'Please verify your email '
                             'address to set up your account.',
        'email': email,
        'domain': DOMAIN,
        'token': token,
    }
    # locates our email.html in the templates folder
    msg_html = render_to_string('email.html', context)
    message = Mail(
        # the email that sends the confirmation email
        from_email=Email('example@gmail.com'),
        to_email=Email('veljko33614@its.edu.rs'),  # list of email receivers
        subject='Account activation',  # subject of your email
        content=msg_html
    )
    try:
        sg = SendGridAPIClient(apikey=SENDGRID_API_KEY)
        sg.send(message)
    except Exception as e:
        return str(e)

мой send_mail.py находится в приложении users

После запуска send_mail. Я получаю эту ошибку, показанную выше.

Я дам вам дерево моих папок, чтобы вы могли понять, почему я не могу решить эту проблему. Я действительно не имею понятия.

папка моего дерева https://prnt.sc/rathyu

1 Ответ

0 голосов
/ 03 марта 2020

Правильный способ доступа к настройкам проекта - импортировать объект настроек из модуля django .conf. https://docs.djangoproject.com/en/3.0/topics/settings/

...