Django模板HTML文件无法找到WebGL Build和TemplateData文件夹。

5
为了练习我的Django技能,我想在我的网站上托管一个游戏。这个游戏是用Unity制作的,并使用WebGL打包。
我使用由WebGL创建的index.html作为Django模板,并在相关位置创建了URL路径和视图。WebGL创建了两个文件夹Build和TemplateData,这些文件夹被引用在index.html中。
我尝试将这些文件夹与html模板一起放置,在我的Django文件夹结构的每个级别上都试过了。
无论我把文件夹放在哪里,结果都是一样的。GET命令被发送,但是会显示“Not Found:/ TemplateData / filename....”几个文件。
有没有人知道如何查看GET命令正在查找的位置,或者文件夹应该放在哪里?
谢谢, Sophie
2个回答

4
经过一番尝试,我发现你可以将所有东西都放进静态文件夹中,然后在index.html中引用它,就像在base.html中引用css文件一样。
    {% load static %}
       .....some more code

    <script>
        var gameInstance = UnityLoader.instantiate("gameContainer", "{% static 
       'Build/Juno_WebGL.json' %}", {onProgress: UnityProgress});
    </script>

对于index.html文件中所有对文件的引用都执行此操作。


2

我最近遇到了同样的问题,然后找到了这个帖子。这是我的解决方案,供将来可能遇到此问题的任何人参考。

将生成的index.html文件放入您的模板文件夹中,使用标准的django、url、view、template流程创建一个指向此模板的链接,例如:

urls.py:

urlpatterns = [
    path('', views.home, name='home'),
    path('unity/', views.unity, name='unity'),
]

views.py:

def unity(request):
    return render(request, template_name='mainapp/unity.html')

将您的WebGL构建文件放在静态文件夹中的某个位置。最后编辑您的index.html,使其包括{% load static %},并查找文件中的任何href,并将这些指向您的静态文件夹,对于任何脚本也是如此。例如,我的Unity构建WebGL应用程序有一行'var buildUrl = "Build";',我必须将其指向我的静态文件夹。

Example:

<!--block content etc.. -->

{% load static %}

    <html lang="en-us">
      <head>
        <meta charset="utf-8">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Unity WebGL Player | UnityApp</title>
        <link rel="shortcut icon" href="{% static 'unity/TemplateData/favicon.ico' %}">
        <link rel="stylesheet" href="{% static 'unity/TemplateData/style.css' %}">
      </head>

       <!-- etc.. -->

      <body>
        <script>
          var buildUrl = "../static/unity/Build";
          var loaderUrl = buildUrl + "/Unity App.loader.js";
            // etc..
        
        </script>
      </body>
    </html>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接