渲染用户在django模板中上传的html5 / js游戏

时间:2014-02-11 23:22:01

标签: django django-templates django-urls django-media

我确信有一种非常简单的方法可以解决我的问题,但我没有足够的经验来考虑任何有用的东西。我有一个网站,我希望能够添加我制作的html5 / js游戏。这将是一个非常简单的网站;一个模板,充当其中包含所有游戏的目录,以及一个模板,用于渲染所选游戏。到目前为止,它很简单。

当我完成游戏时,我想将其上传到网站。我是通过管理页面上传游戏的拉链来实现的。 zip解压缩并存储在媒体文件夹中。类似于:“media / id_of_game / game_folder”

典型的游戏由html页面,几个javascript文件和一些图像组成。

这就是我遇到问题的地方。如何在我的django模板中渲染此游戏?我尝试过,但游戏本身固有的相对路径已经破裂。

我的模板网址如下:示例

  • mysite.com/demo/game-1 /

我的游戏所需的images / 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 个答案:

答案 0 :(得分:0)

我终于找到了解决问题的方法。

我已将此添加到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的设置以实现相同的目的?