我想知道Django开发人员在哪里保存您的媒体文件夹。我目前正在开发一个位于~/apps/django-project
的项目。我现在不使用连续交付,但是当我必须更新项目时,我直接将其SSH到远程计算机中,并使用git拉动更新的文件(这是因为它位于项目文件夹中)。问题是媒体文件夹一直在更新,我必须使用git跟踪它们,这不是我想要做的。我认为我也不想.gitignore他们。
像这样构造项目是一个好主意吗?
项目:~/apps/django-project
媒体:~/media
统计信息:~/static
如果这是个好主意,您能给我一个关于如何设置settings.py
MEDIA_ROOT和STATIC_ROOT
的提示吗?
如果这不是一个好主意,我想听听您的看法,该项目的结构如何以及应该考虑哪些其他好的原则。 (此外,欢迎提供开发/生产技巧)
带Python3.7的Django3
答案 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
public/
media/
attachs/
users/
static/
admin/
css/
js/
robots.txt
humans.txt
manifest.json
favicon.ico
我什至曾经添加过对.php文件的支持,我只是将文件放在其中,并将.php设置作为扩展规则添加到nginx中。