我使用Python/Django和默认的Django模板.我有这个头(这个位置的其他django静态文件工作正常):
<script type="text/javascript" src="{% static "js/Chart.min.js" %}"></script>
Run Code Online (Sandbox Code Playgroud)
当然,我将Chart.min.js从主Chart.js中提取下载到静态js目录中.
在我的身体里,我有:
<div class="graph">
<canvas id="dgraph" width="600" height="400"></canvas>
</div>
Run Code Online (Sandbox Code Playgroud)
我身体也有:
<script type="text/javascript" src="{% static "js/stuff.js" %}"></script>
Run Code Online (Sandbox Code Playgroud)
在stuff.js我有:
var data = [
{
value: 20,
color:"#878BB6"
},
{
value : 40,
color : "#4ACAB4"
},
{
value : 10,
color : "#FF8153"
},
{
value : 30,
color : "#FFEA88"
}
];
Run Code Online (Sandbox Code Playgroud)
//获取我们要选择的canvas元素的上下文
var ctx = document.getElementById("dgraph").getContext("2d");
new Chart(ctx).Doughnut(data, {});
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在浏览器中显示它时(Chrome会发生这种情况),我在控制台中看到了这一点:
Uncaught ReferenceError: Chart is not defined
Run Code Online (Sandbox Code Playgroud)
图表对象从何而来?这似乎是非常基础的,我觉得好像我已经遵循了google和stackoverflow上的所有可用指令.请帮忙!
我的models.py中有一些带有CharFields的模型。
例如
class MyModel(models.Model):
item_port = models.CharField(max_length=50)`
Run Code Online (Sandbox Code Playgroud)
我意识到这对于端口来说有点愚蠢,因此将它们全部更改为IntegerFields,如下所示:
class MyModel(models.Model):
item_port = models.IntegerField(null=True)
Run Code Online (Sandbox Code Playgroud)
我在本地开发系统和MySQL类型数据库中使用sqlite3进行部署。通常,使用以下命令从头进行部署时,我会为新的docker实例进行迁移:
python manage.py makemigrations
和
python manage.py migrate
但是,我还记录了在git中对sqlite3数据库所做的所有迁移,以供参考。
我的主要问题是,我是否可以简单地使用数据库中的现有数据从CharField进行makemigrations / migrate到IntegerField的迁移(在客户端站点上将是MySQL类型的数据库,还是我需要手动执行类似的操作?:
https://docs.djangoproject.com/zh-CN/1.9/topics/migrations/#data-migrations
非常感谢。
我写了一个正则表达式如下:
"^[\+]{0,1}([\#]|[\*]|[\d]){1,15}$"
总之,这与可选的"+"符号匹配,后跟最多15个字符,可能是"#","*"或数字.
但是,这意味着'+#'将匹配,这不是一个有效的结果,因为我总是需要至少一个数字.
典型的有效匹配可能是:
+1234
445678999
+#7897897
+345764756#775
Run Code Online (Sandbox Code Playgroud)
所以,鉴于我已经为这些匹配制作了一个有效的RegEx,我想优雅的解决方案是使用这个正则表达式并添加一些特殊标准来全局检查结果中的数字或以某种方式禁止任何没有的数据最少一位数.
我如何检查该数字?