Где вы храните свою мультимедийную папку в Django проекте? - PullRequest
1 голос
/ 14 января 2020

Мне интересно, где вы Django разработчики храните вашу папку мультимедиа. В настоящее время я разрабатываю проект, расположенный по адресу ~/apps/django-project. В данный момент я не использую непрерывную доставку, но когда мне нужно обновить проект, я sh прямо в удаленную машину и вытягиваю обновленные файлы, используя git (потому что он находится в папке проекта). Проблема в том, что папка мультимедиа постоянно обновляется, и мне придется отслеживать их, используя git, что я не хочу делать. Я не думаю, что я хотел бы .gitignore их тоже.

Будет ли хорошей идеей структурировать проект таким образом?

Проект: ~/apps/django-project

Медиа: ~/media

Статика: ~/static

Если это хорошая идея, не могли бы вы дать мне подсказку о том, как настроить мои settings.py MEDIA_ ROOT и STATIC_ROOT для выполнения sh этого?

Если это не очень хорошая идея, я хотел бы услышать от вас, как можно структурировать проект и какие другие хорошие принципы я должен принять во внимание. (также приветствуются советы по разработке / производству)

Django3 с Python3 .7

1 Ответ

2 голосов
/ 14 января 2020

Я создаю папку public в своем каталоге root и добавляю туда каталоги media и stati c

public/
   media/
   static/

Я также добавляю указанные c пути к .gitignore, поэтому они не конфликтуют между средами.

public/media
public/static

Преимущество этого подхода в том, что если вы используете веб-сервер, такой как nginx или uwsgi, вы можете установить для документа root значение public и обработать любой файл stati c по умолчанию и разрешить 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 для любого другого запроса, который не является файлом c в public

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

Я даже однажды добавил поддержку файлов. php, где я просто поместите туда файлы и добавьте установку. php в качестве правила расширения в nginx.

...