Рендеринг загруженных пользователем html5/js игр в шаблоне django

Я уверен, что есть очень простой способ решить мою проблему, но я не достаточно опытен, чтобы придумать что-нибудь полезное. У меня есть веб-сайт, на котором я хочу добавить html5/js-игры, на которых я играю. Это будет очень простой сайт; шаблон, который действует как каталог со всеми играми в нем, и шаблон, в котором я отображаю выбранную игру. Пока все просто.

Когда я заканчиваю игру, я хочу загрузить ее на сайт. Я делаю это, загружая zip игры со страницей администратора. Почтовый индекс распаковывается и хранится в папке мультимедиа. Что-то вроде: "media/id_of_game/game_folder"

Типичная игра состоит из html-страницы, нескольких файлов javascript и нескольких изображений.

Вот где у меня проблема. Как мне отрендерить эту игру внутри моего шаблона django? Я пытался, но относительные пути, присущие самой игре, нарушены.

URL моего шаблона выглядит следующим образом: пример

  • mysite.com/demo/game-1/

И изображения / JavaScript /.. Мне нужно для моей игры, например

  • mysite.com/media/id_of_game/game_folder/main.js
  • mysite.com/media/id_of_game/game_folder/index.html
  • mysite.com/media/id_of_game/game_folder/templates/random_image.png
  • mysite.com/media/id_of_game/game_folder/js/awesome_game_library.js

Относительные пути полностью нарушены.

Большое спасибо всем мастерам Django, которые читают здесь! Надеюсь, вы сможете мне помочь:)

1 ответ

Я наконец нашел решение своей проблемы.

Я добавил это в urls.py:

url(r'^demo/game/(?P<id>\d+)/(?P<path>.+)$', RedirectView.as_view(url='/media/demo/elements/%(id)s/%(path)s')),

Это означает, что когда я получаю доступ к этому:

  • mysite.com/demo/game/1/my_awesome_picture.jpg

Я получил:

  • mysite.com/media/demo/elements/1/my_awesome_picture.jpg

Можно ли перенаправлять файлы с помощью django urls.py, как это, или я должен изменить настройки nginx, чтобы добиться того же самого?

Другие вопросы по тегам