【问题标题】:Media files not loading in email in Django媒体文件未在 Django 中的电子邮件中加载
【发布时间】:2017-03-20 04:09:15
【问题描述】:

我在 Apache Web 服务器上部署了一个 Django 项目。我在文件夹/var/www/media/ 中提供我的媒体文件。当我在我的网络应用程序上时,我的媒体文件可以正常加载。

我有一个功能可以向不同的人发送电子邮件。在那封电子邮件中,这些媒体文件应该加载,但它们在控制台中显示 404 错误。

这是我在 apache2.conf 文件中添加的内容:

WSGIScriptAlias / /home/search/egeirn/project/egeirn/wsgi.py
WSGIPythonPath /home/search/egeirn/project:/home/search/virtualenvs/egerin/lib/python2.7/site-packages

Alias /media/ /var/www/media/
Alias /static/ /var/www/static/

<Directory /var/www/static>
Require all granted
</Directory>

<Directory /var/www/media>
Require all granted
</Directory>

<Directory /home/search/egeirn/project/egeirn>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

这是我的 base.py 文件:

...
STATIC_URL = '/static/'
STATIC_ROOT = '/var/www/static/'

MEDIA_URL = '/media/'
MEDIA_ROOT = '/var/www/media/'
...

这是我在 ma​​nage.pywsgi.py 中加载的 production.py 文件:

from .base import *

DEBUG = False

ALLOWED_HOSTS = ['iro.egerin.com']

MEDIA_URL = 'http://iro.egerin.com/media/'

请告诉我应该怎么做才能从应用程序中加载我的媒体文件,比如在电子邮件中?

只是为了说明这是控制台中的错误:

【问题讨论】:

  • 你在项目urls.py中设置了媒体url吗

标签: python django apache email django-staticfiles


【解决方案1】:

您错过了在添加媒体文件的模板中添加服务器名称。 你的图像元素应该是这样的:

<img src="{{MEDIA_URL}}{{path_of_image}}" />

您错过了模板中的 media_url。

【讨论】:

    【解决方案2】:

    确保您在项目 urls.py 中添加了媒体 url

    urlpatterns += patterns('',url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
                                {'document_root': settings.MEDIA_ROOT, 'show_indexes': False}),)
    

    在项目settings.py中设置MEDIA_ROOT,然后就可以直接使用.url({{instace.prodimage.url }})访问模板中的Images

    【讨论】:

    • 你能告诉我在urls.py中添加媒体url的目的是什么吗?
    • 从数据库中读取媒体文件路径,(将媒体文件上传到应用程序后,文件转到您提到模型创建的媒体文件夹,路径存储到模型中字段)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 2015-03-19
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多