网页教程


Evennia的网站和数据库配置是建立在Django的web框架上的。想要充分掌握Django需要阅读Django的文档,但我们提供的这个教程可以让你了解一些基本的知识,以及它们是如何应用在Evennia中的。本文主要介绍如何配置所需的东西。基于网页浏览角色的教程则给出了一个详细的例子,教你制作一个与游戏相关的自定义网页。

Evennia的网站代码和配置文件都在 src/web 中。因为不建议直接编辑 src/ 中的文件,我们需要做一些设置以在 game/gamesrc 中配置网站。
  1. 将 urls.py 从 game/gamesrc/web/examples/ 复制到 game/gamesrc/web/。
  2. 在你的 game/settings.py 文件中添加以下内容:
    ROOT_URLCONF = 'game.gamesrc.web.urls'
    

例子中的 urls.py 文件会自动导入默认的网页信息,你可以通过修改文件中的 patterns 列表来重载它,这对制作自定义页面很重要。


基本概况

Django是一个web框架,它提供了一套开发工具,让你可以快速、轻松地构建网站。

Django项目可以分割成许多应用程序,而所有这些应用程序组合起来就构成了项目。例如,你可以用应用程序来做调查、显示新闻帖子,或者像我们一样创建网页客户端。

每个应用程序都有一个 urls.py 文件用于指定应用程序所用的网址;一个 views.py 文件带有网址所对应的代码;一个 templates 目录用于将代码的运行结果以HTML的形式显示给用户;一个 static 文件夹用来保存CSSJavaScript及图像文件等资源。Django应用程序还可以有一个 models.py 文件用于将信息存入数据库。在本教程中我们不会修改模型,如果你对此感兴趣,可以看看新模型的文档(以及Django文档中关于模型的部分)。


更改首页的logo

Evennia的默认logo是一条有趣的突眼睛小蛇缠绕着地球齿轮。它虽然它可爱,但可能无法代表你的游戏,所以你想做的第一件事可能就是用自己的标识来替换它。

所有的Django网页应用程序都需要静态资源:CSS文件、JavaScript文件和图像文件。为了确保项目能拥有它所需的所有静态文件,系统会将所有应用程序 static 文件夹内的文件集中起来,放在 settings.py 中定义的 STATIC_ROOT 路径中。Evennia 默认的 STATIC_ROOT 是 game/gamesrc/web/static。

由于Django会将所有处于分散文件夹中的文件集中起来放到一个文件夹中,文件可能会相互覆盖,我们就利用这一点插入自定义的文件,而不必修改 src/ 中的文件。

按照默认配置,Evennia在放置静态文件时会最后放 game/gamesrc/web/static_overrides 中的文件。这就是说,static_overrides 文件夹中的文件会覆盖之前导入的具有相同路径的文件。最后这一点有必要再强调一下:想要覆盖标准 static 文件夹中的静态资源文件,你需要在 static_overrides 文件夹中精确复制 static 文件夹中的路径和文件名。

让我们看看需要对标识做些什么。默认的网页应用程序在 src/web/ 中,我们可以看到那里有一个 static 文件夹。如果浏览进去,我们最终会找到Evennia的标识文件:src/web/static/evennia_general/images/evennia_logo.png。

在我们的 static_overrides 文件夹中必须复制 static 文件夹中的路径部分,也就是必须复制 evennia_general/images/evennia_logo.png。

因此,要更改logo,我们需要在 static_overrides 中创建文件夹路径 evennia_general/images/ 。然后将自己的logo文件重命名为 evennia_logo.png 并将它复制到那里。这个文件的最终路径就是:game/gamesrc/web/static_overrides/evennia_general/images/evennia_logo.png。

要让这个文件生效,只需切换到 game 目录下并重启服务器:
python evennia.py reload
这会重新载入配置,并使用新的静态文件。如果你不想重启服务器,可以用
python manage.py collectstatic
这只会更新静态文件,不会做其他更改。


更改首页的文字

默认的Evennia首页包含了Evennia项目的相关信息,你可能想用自己项目的信息替换它。更改页面模板的方式和前面更改静态资源类似。

和静态文件一样,Django会在一系列模板文件夹中搜索它想要的文件。不同的是,Django不会将所有模板文件复制到同一个地方,它只是在模板文件夹中搜索,直到找到符合要求的模板。这就是说,当你修改模板时变化是立即生效的,你不必重启服务器或执行任何额外的命令来查看这些更改,在你的浏览器上重新载入页面就可以了。

要更改主页的文字,我们需要找到它的模板。在基于网页浏览角色的教程中,我们会更详细地介绍如何选择渲染页面所用的模板。现在,你只需要知道我们想修改的模板在 src/web/templates/evennia_general/index.html 中。

想替换该模板文件,你要将你修改的模板放到 game/gamesrc/web/template_overrides/ 中。和修改静态资源一样,你必须精确复制默认模板目录中的路径。因此,我们需要创建一个新的目录 evennia_general 将替换模版放入其中,并将其重命名为 index.html。因此,最终的文件路径应该是:game/gamesrc/web/template_overrides/evennia_general/index.html 。

通常来说,将原有模版复制过去并在那里进行编辑会比较方便些。原有的文件已经带有所有标记和标签,可以直接编辑它们。


扩展阅读


想要获得关于网页内容的进一步指导,可以继续阅读基于网页浏览角色的教程,它会教你制作可以显示游戏内角色属性的网页。你还可以看看Django自己的教程,以更深入地了解Django的工作方式及特性。


(原文:https://github.com/evennia/evennia/wiki/Web Tutorial    翻译:卢铱俊)