2014-09-06 3 views
1

Возможно ли, что на движке приложения (python) указать несколько статических каталогов на один URL-адрес? В моем файле app.yaml я надеюсь сделать что-то вроде:App.yaml - Одиночный URL-адрес, чтобы обслуживать несколько статических каталогов

ПОПЫТКИ 1:

- url: /media/ 
    static_dir: static/.* 

ПОПЫТКА 2:

- url: /media/ 
    static_dir: static/dir1 

- url: /media/ 
    static_dir: static/dir2 

ПОПЫТКА 3:

- url: /media/ 
    static_dir: static/dir1 
    static_dir: static/dir2 

Использование что-либо обозначение (. *) приводит к тому, что обе каталоги не работают. Многократная декларация в попытке 2 приводит к тому, что игнорируется только первая работающая (dir1), а вторая (dir2) игнорируется. Попытка 3 приводит к предупреждению, когда я пытаюсь запустить двигатель и разрешить его запуск локально.

Как это сделать без изменения URL-адреса для каждого нового статического каталога?

ответ

1

Предполагая, что вы просто хотите, все под «статическими» обслуживать через «/ СМИ», он должен работать нормально, как:

- url: /media 
    static_dir: static 

EDIT - В то время я пишу это, это точная конфигурация используется здесь: https://imaginaryboy.appspot.com/media/dir1/text.txt

+0

Я не люблю это решение, потому что мои URL пути будут иметь дополнительный уровень, прежде чем попасть в dir1 или dir2 папки, но не плохое предложение ... Это слишком плохо, это не представляется возможным делаю именно то, о чем я просил (за ответ Дмитрия Садовничего). Отмечая это как ответ, так как я продолжу этот путь. Спасибо что нашли время ответить. – Robbie

2

Невозможно. Но вы можете заставить его работать со ссылками, как /media-1/img.jpg, /media-2/bla.jpg и т.д.

- url: /media-(.*?)/(.*) 
    static_files: static/dir\1/\2 
    upload: static/(.*?)/(.*) 

Больше на docs.

Я думаю, что единственный выход - использовать простой скрипт сборки, который скопирует все изображения из/static/dir1 и/static/dir2 в медиа. Вы можете использовать этот скрипт для развертывания с одним щелчком мыши. Что-то вроде этого:

import os, glob 
source = ['static/dir-1', 'static/dir-2'] 
dest = 'media' 
for s in source: 
    for f in glob.glob(os.path.join(s, '*.*')): 
    shutil.copy(f, dest) 
+0

Спасибо за ответ. Это отличный момент, и я ценю ссылку. На данный момент я собираюсь реализовать решение imaginaryboy (из-за простоты), но в конечном итоге я, скорее всего, сделаю нечто подобное. Благодаря! – Robbie

Смежные вопросы