如何在 Django 中提供 WASM 文件
How to serve WASM files in Django
我使用以下方法将我的 C 文件编译为 wasm:
emcc main.c -s USE_SDL=2 -O3 -s WASM=1 -o main.js
我只使用 WASM 来操作 canvas。除了“胶水”js代码,没有其他JS代码。
我现在有一个包含这些文件的目录(在 Django 之外,就在我的 Documents 文件夹中的某处):
- home.hml
- main.c
- main.js
- main.wasm
我可以使用任何网络服务器提供服务,例如
python3 -m http.server 8000 --bind 127.0.0.1
并在浏览器中观看动画。它有效。目前没有问题。
我现在想从 Django 服务 home.html。我的 URLs.py 有:
path('', views.home, name='home'),
和views.py有:
def home(request):
context = {}
return render(request, 'app/home.html', context)
我已将home.html复制到app/templates/app
然后我将main.js复制到app/static/app
然后我修改home.html来替换:
<script src="main.js"></script>
有
<script src="{% static 'app/main.js' %}" type="text/javascript"></script>
我不知道如何处理 main.wasm。这也应该进入静态文件夹或项目根目录吗?我需要为此在某处添加显式导入吗?我怎样才能让我的 home.html 表现得与简单的 httpserver 一样,但是当从 Django 提供服务时?
请注意 home.html 中的所有 DOM 元素都按原样正确显示,但 canvas 除外。所以我相对确定一切都设置正确,除了 main.wasm 不可访问的事实。
在浏览器开发者工具的网络选项卡中查看浏览器发出的HTTP请求。也许 URL 中的路径是错误的或 Django returns 不正确的内容类型。
我使用以下方法将我的 C 文件编译为 wasm:
emcc main.c -s USE_SDL=2 -O3 -s WASM=1 -o main.js
我只使用 WASM 来操作 canvas。除了“胶水”js代码,没有其他JS代码。
我现在有一个包含这些文件的目录(在 Django 之外,就在我的 Documents 文件夹中的某处):
- home.hml
- main.c
- main.js
- main.wasm
我可以使用任何网络服务器提供服务,例如
python3 -m http.server 8000 --bind 127.0.0.1
并在浏览器中观看动画。它有效。目前没有问题。
我现在想从 Django 服务 home.html。我的 URLs.py 有:
path('', views.home, name='home'),
和views.py有:
def home(request):
context = {}
return render(request, 'app/home.html', context)
我已将home.html复制到app/templates/app
然后我将main.js复制到app/static/app
然后我修改home.html来替换:
<script src="main.js"></script>
有
<script src="{% static 'app/main.js' %}" type="text/javascript"></script>
我不知道如何处理 main.wasm。这也应该进入静态文件夹或项目根目录吗?我需要为此在某处添加显式导入吗?我怎样才能让我的 home.html 表现得与简单的 httpserver 一样,但是当从 Django 提供服务时?
请注意 home.html 中的所有 DOM 元素都按原样正确显示,但 canvas 除外。所以我相对确定一切都设置正确,除了 main.wasm 不可访问的事实。
在浏览器开发者工具的网络选项卡中查看浏览器发出的HTTP请求。也许 URL 中的路径是错误的或 Django returns 不正确的内容类型。