在 Django 项目中,您将媒体文件夹放在哪里?

Where do you keep your media folder in a Django project?

我想知道 Django 开发人员将您的媒体文件夹放在哪里。我目前正在开发一个位于 ~/apps/django-project 的项目。我目前没有使用持续交付,但是当我必须更新项目时,我直接通过 ssh 进入远程机器并使用 git 拉取更新的文件(那是因为它位于项目文件夹中)。问题是媒体文件夹总是在更新,我必须使用 git 来跟踪它们,这不是我想做的事情。我想我也不想。git也忽略它们。

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

项目:~/apps/django-project

媒体:~/media

统计:~/static

如果这是个好主意,你能给我一些提示,告诉我如何设置我的 settings.py MEDIA_ROOT 和 STATIC_ROOT 来完成这个吗?

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

Django3 与 Python3.7

我在我的根目录中创建了一个文件夹 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 中的扩展规则。