您将媒体文件夹保存在Django项目中的哪里?

时间:2020-01-14 12:37:00

标签: django python-3.x linux django-3.0

我想知道Django开发人员在哪里保存您的媒体文件夹。我目前正在开发一个位于~/apps/django-project的项目。我现在不使用连续交付,但是当我必须更新项目时,我直接将其SSH到远程计算机中,并使用git拉动更新的文件(这是因为它位于项目文件夹中)。问题是媒体文件夹一直在更新,我必须使用git跟踪它们,这不是我想要做的。我认为我也不想.gitignore他们。

像这样构造项目是一个好主意吗?

项目:~/apps/django-project

媒体:~/media

统计信息:~/static

如果这是个好主意,您能给我一个关于如何设置settings.py MEDIA_ROOT和STATIC_ROOT的提示吗?

如果这不是一个好主意,我想听听您的看法,该项目的结构如何以及应该考虑哪些其他好的原则。 (此外,欢迎提供开发/生产技巧)

带Python3.7的Django3

1 个答案:

答案 0 :(得分:2)

我在根目录中创建一个文件夹public,然后在其中添加媒体和静态目录

public/
   media/
   static/

我还向.gitignore添加了特定路径,因此它们在环境之间不会冲突。

public/media
public/static

这种方法的好处是,如果您使用的是像nginx或uwsgi这样的网络服务器,则可以将文档根目录设置为public并默认提供任何静态文件,并解析为django的任何其他路径public中的文件。

例如在nginx中,我做这样的事情。

server {
    root /var/sites/myproject/public;

    location @djangoapp {
        proxy_redirect off;
        proxy_pass http://localhost:8000;
    }

    location / {
        try_files $uri @djangoapp; 
    }
}

这非常方便,因为很容易推断出public,该文件夹中的所有内容都将被静态提供。例如,我将我的robots.txt文件和其他一些文件放在那里,我知道它们只需要简单地投放即可。对于public

中不是静态文件的任何其他请求,它默认为django非常好,而且速度非常快
public/
   media/
     attachs/
     users/
   static/
     admin/
     css/
     js/
   robots.txt
   humans.txt
   manifest.json
   favicon.ico

我什至曾经添加过对.php文件的支持,我只是将文件放在其中,并将.php设置作为扩展规则添加到nginx中。