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

Posted

技术标签:

【中文标题】在 django 模板中渲染用户上传的 html5/js 游戏【英文标题】:Rendering user uploaded html5/js games inside a django template 【发布时间】:2014-03-10 00:52:03 【问题描述】:

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

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

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

这就是我的问题所在。如何在我的 django 模板中渲染这个游戏?我试过了,但是游戏本身固有的相对路径被破坏了。

我的模板url如下:example

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 的设置以实现相同的效果?

【讨论】:

以上是关于在 django 模板中渲染用户上传的 html5/js 游戏的主要内容,如果未能解决你的问题,请参考以下文章

渲染后如何获取模板(Django)

客户端的 Django 模板渲染

Django视图绕过渲染请求

渲染视图在模板中包含 django 位置字段

Django之模板渲染

Django 多模板渲染