首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用chessboard.js在Django中构建一个显示棋盘的网页

尝试使用chessboard.js在Django中构建一个显示棋盘的网页
EN

Stack Overflow用户
提问于 2017-07-29 06:55:52
回答 2查看 635关注 0票数 3

我想在Django建一个国际象棋网站。现在,我只想使用chessboard.js Javascript库获得一个显示棋盘的页面,它的目录结构是:

棋盘

-css

-js

-img

似乎通常情况下,为了使用chessboard.js在HTML中显示棋盘,您必须将HTML文件存储在chessboard文件夹中,然后链接js和css文件,如下所示:

代码语言:javascript
复制
<head>
    <link rel="stylesheet" href="css/chessboard-0.3.0.css" />
    <script src="js/jquery-1.10.2.min.js"> </script>
    <script src="js/chessboard-0.3.0.js"> </script>
</head>
<body>
    <div id="board1" style="width: 400px"></div>
    <script>
        var board1 = new ChessBoard('board1', 'start');
    </script>
</body>

如果希望将HTML文件存储在单独的目录中,则必须修改chessboard-0.3.0.js文件,以便在将CSS样式表和图像链接附加到HTML文件时,路径相对于HTML文件的位置是正确的。

通常,在Django应用程序中,您将所有HTML存储在模板目录中,将所有静态文件存储在单独的静态目录中。这就是我在这里所做的,所以我使用这个(test.html)来代替上面的HTML语言:

代码语言:javascript
复制
{% load staticfiles %}

<!DOCTYPE html>
<html>
  <head>
    <title>Chess</title>
    <link rel="stylesheet" href="{% static 'css/chessboard-0.3.0.css' %}">
    <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
    <script src="{% static 'js/chessboard-0.3.0.js' %}"></script>
  </head>
  <body>
    <img src="{% static 'img/chesspieces/wikipedia/bB.png' %}"/>
    <div id="board1" style="width: 400px"></div>
    <script>
        var board1 = ChessBoard('board1', 'start');
    </script>
  </body>
</html> 

请注意,静态文件是使用Django模板标记链接的,而不是相对路径。我还修改了chessboard-0.3.0.js文件,以便在将图像链接附加到HTML时,它使用Django模板标记而不是源的相对路径。我猜我需要在其他地方修改.js文件以反映目录结构的变化,但我不确定如何修改--我是新接触Javascript的人。有没有人在Django上使用过chessboard.js来达到这个目的?如果是这样,你是如何让它工作的?下面是我的应用程序目录结构:

代码语言:javascript
复制
└───game
    │   admin.py
    │   apps.py
    │   models.py
    │   tests.py
    │   urls.py
    │   views.py
    │   __init__.py
    │
    ├───migrations
    │   │   __init__.py
    │   │
    │   └───__pycache__
    │           __init__.cpython-36.pyc
    │
    ├───static
    │   ├───css
    │   │       chessboard-0.3.0.css
    │   │       chessboard-0.3.0.min.css
    │   │
    │   ├───img
    │   │   └───chesspieces
    │   │       └───wikipedia
    │   │               bB.png
    │   │               bK.png
    │   │               bN.png
    │   │               bP.png
    │   │               bQ.png
    │   │               bR.png
    │   │               wB.png
    │   │               wK.png
    │   │               wN.png
    │   │               wP.png
    │   │               wQ.png
    │   │               wR.png
    │   │
    │   └───js
    │           chessboard-0.3.0.js
    │           chessboard-0.3.0.min.js
    │
    ├───templates
    │   └───game
    │           LICENSE.txt
    │           test.html
EN

回答 2

Stack Overflow用户

发布于 2017-08-15 02:58:21

您必须进入chessboard.js文件并更改图像的来源:

喜欢:Chessboardjs NPM package, not showing images

进入chessboard.js并修改第445行(根据您的版本不同,可能会有所不同)

代码语言:javascript
复制
cfg.pieceTheme = 'img/chesspieces/wikipedia/{piece}.png';

更改为

代码语言:javascript
复制
cfg.pieceTheme = '/static/img/chesspieces/wikipedia/{piece}.png';
票数 1
EN

Stack Overflow用户

发布于 2017-07-29 14:33:07

你需要检查你的django版本。你应该把app文件夹放在游戏开始的地方:

代码语言:javascript
复制
{% static 'game/js/chessboard-0.3.0.min.js' %}

因为django会搜索并查找第一个同名的文件。当你把它放在与app同名的文件夹中时,它就变得唯一了。游戏

代码语言:javascript
复制
- static
--/game
---/js
----/yourjs.file
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45383466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档