Django无法访问图像和媒体文件

时间:2017-02-24 21:43:45

标签: python django

当我在服务器上传文件时,我在加载图像和媒体文件时遇到错误(未找到错误)。但是在我的电脑上(localhost)一切都还可以。你能帮我解决一下吗?

  

settings.py

STATIC_URL = '/site/'
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn")
STATICFILES_DIRS = os.path.join(BASE_DIR, "static"),

MEDIA_URL = '/files/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media")
  

urls.py

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('article.urls')),

]

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
  

模板/ index.html中

        <div class="thumbnail">
            <!--image-->
            <canvas class="image-canvas" style="background-image: url({{ article.cover.url }});"></canvas>
            <div class="caption">
                <!--article head-->
                <h3 style="text-align: center !important;">{{ article.title }}</h3>

                <!--article summary-->
                <div class="content"><p>{{ article.content | truncatewords_html:'30' }} </p></div>

            </div>
            <div class="visible-xs line "></div>

        </div>

3 个答案:

答案 0 :(得分:0)

您是否将Djache2与Django一起使用?

如果是,您是否指定了静态和媒体文件夹所在的apache2

<Directory /path/to/mysite.com/static>
Require all granted
</Directory>

<Directory /path/to/mysite.com/media>
Require all granted
</Directory>

https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/modwsgi/#serving-files

旧答案:

您是否在文件夹媒体上设置了正确的权限?

这种丑陋的方式

sudo chmod -R 777 /var/www/media/

好方法

sudo groupadd djangogroup
sudo adduser www-data djangogroup
sudo chgrp -R djangogroup /var/www/
sudo chmod -R 770 /var/www/

答案 1 :(得分:0)

$ ls -al static/

drwxrwxr-x  2 root root 4096 Feb 24 17:01 css
drwxrwxr-x  2 root root 4096 Feb 24 17:00 fonts
drwxrwxr-x  2 root root 4096 Feb 24 17:01 img
drwxrwxr-x  2 root root 4096 Feb 24 17:01 js
drwxrwxr-x  2 root root 4096 Feb 24 17:01 partials
drwxrwxr-x  2 root root 4096 Feb 24 17:01 scss

答案 2 :(得分:0)

如果您使用的是nginx,则必须配置静态和媒体文件所在的位置。 我已经使用本教程来配置nginx + uwsgi + django:

http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html

具体参考教程的this部分

它可能对你有帮助。