[django]当debug = false时,MEDIA_URL返回找不到

kue*_*kue 3 python django debugging media-url python-3.x

当 DEBUG=TRUE 时,media_url 正在工作,但 DEBUG = False 时,返回不工作。
这是我的设置文件。

设置.py

DEBUG = False
...
MEDIA_URL = "/pics/"
MEDIA_ROOT = BASE_DIR
Run Code Online (Sandbox Code Playgroud)

urls.py

urlpatterns = [
   ....
   ....
] + static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)

首页.html

...
<img src="{{ post.image.url}}" ..>
Run Code Online (Sandbox Code Playgroud)

模型.py

class Post(models.Model):
    title    = models.CharField(max_length=255)
    pub_date = models.DateTimeField()
    image    = models.ImageField(upload_to="media/")
Run Code Online (Sandbox Code Playgroud)

也许,这个设置是推荐的调试模式。
我应该改变这个设置什么。

Jen*_*rup 6

根据文档:

此帮助器函数仅在调试模式下工作,并且仅当给定前缀是本地(例如 /media/)而不是 URL(例如 http://media.example.com/)时。

他们提到的辅助函数是:+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

在生产中为 nginx 设置静态和媒体文件非常简单,DigitalOcean 有一个很棒的指南。静态部分只有几行:

    location /media/ {
        root /home/sammy/myproject;
    }
Run Code Online (Sandbox Code Playgroud)