2012-01-01 8 views
1

私は、email_appとlanding_page_appという2つのアプリケーションを持つDjangoプロジェクトを持っています。 landing_page_app.viewsにはemail_app.viewsが含まれているため、new_lead_email機能を使用できます。 email_app.viewsDjango-Templated-Email:TemplateDoesNotExistを別のファイルからインポートするとき

landing_page_app.views
from datetime import datetime 
from templated_email import send_templated_mail 

def new_lead_email(email): 
    send_templated_mail(
     template_name='new_lead', 
     from_email='[email protected]', 
     recipient_list=['[email protected]'], 
     context={ 
      'email': email, 
      'current_time': str(datetime.now()), 
      }, 
    ) 

from email_app.views import new_lead_email 
new_lead_email(email) 

私は "templated_email/new_lead.txt" のために "TemplateDoesNotExist" エラーが発生します。 new_lead_email機能が正しく動作するのは、landing_page_app.viewsにインポートされていない場合です(つまり、Django URL new_lead_emailemail_app.viewsに直接呼び出している場合)。

settings.pyでは、「new_lead.email」テンプレートを含むディレクトリにTEMPLATED_EMAIL_TEMPLATE_DIRTEMPLATED_EMAIL_FILE_EXTENSIONを設定しました。これは、django-templated-emailのvanilla_django.pyファイル(https://github.com/bradwhittington/django-templated-email/blob/master/templated_email/backends/vanilla_django.py)がsettings.pyをインポートしていないことを示していますファイルを正しく。

email_app.viewsの機能を他のファイルにインポートしてテンプレートを正しく動作させる方法については、ご意見をお聞かせください。非常に便利なDjangoクラスのbradwhittingtonに感謝します。私はそれを正しく使う方法を学ぶのを楽しみにしています!

答えて

0

あるアプリのビューを別のアプリのビューにインポートしないでください。 email_app用のutils.pyを作成してそこに関数を入れてみてください。私は現在、プロジェクトルートのglobalutils.pyファイルを使用して、プロジェクト用の汎用電子メール送信機能でこれを実行しています。私はテンプレート/ email /にあるテンプレートからtxt/html電子メールをプロジェクトルートに送ります。ここで

は、メソッドの最初の数行が

def send_message(template_name, subject_context, body_context, recipients, sender=None, send_email=True, send_internal=True): 

subject = render_to_string("%s/%s_%s.%s" % ("email", template_name, "subject", "txt"), subject_context) 
t_html = render_to_string("%s/%s_%s.%s" % ("email", template_name, "body", "html"), body_context) 
t_text = strip_tags(t_html) 

ているこれは、電子メールにそれを呼び出すアプリに関係なく送信されます。

+0

お返事ありがとうございます。私はこれらの種類の機能のために共通のファイルに切り替えました。私は 'send_templated_mail'関数がsettings.pyファイルを正しく"読み込んで "電子メールテンプレートを探す場所を知っていないという同じ問題を依然として抱えています。 – gwintrob

+0

共通ファイルとos.path.join(BASE_DIR、 'email template dir')にsettings.pyを含めていますか? – dustinmm80

関連する問題