1

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

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

项目:~/apps/django-project

媒体:~/media

静力学:~/static

如果这是一个好主意,您能否给我一个关于如何设置settings.pyMEDIA_ROOT 并STATIC_ROOT完成此操作的提示?

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

Django3 与 Python3.7

4

1 回答 1

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文件和其他一些我知道他们只需要简单服务的文件放在那里。对于 django 中不是静态文件的任何其他请求,它默认非常好并且非常快public

public/
   media/
     attachs/
     users/
   static/
     admin/
     css/
     js/
   robots.txt
   humans.txt
   manifest.json
   favicon.ico

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

于 2020-01-14T15:09:46.857 回答