('female', '女')
nick_name = models.CharField(max_length=20, verbose_name='昵称', null=True, blank=True)
mobile = models.CharField(max_length=11, verbose_name='手机', null=True, blank=True)
address = models.CharField(max_length=200, verbose_name='地址', null=True, blank=True)
def email_verified(self):
if self.is_authenticated:
result = EmailAddress.objects.filter(email=self.email)
if len(result):
return result[0].verified
else:
return False
class Meta:
verbose_name = '用户信息'
verbose_name_plural = verbose_name
ordering = ['-id']
def __str__(self):
return self.username
那么数据库中的名字就是:
users_userprofile
如果app的名字是usersusrs/models.py中如果是一个这样的类class UserProfile(AbstractUser): GENDER_CHOICE = ( ('male', '男'), ('female', '女') ) nick_name = models.CharField(max_length=20, v...
在前端将参数传给后台后,前端并没有显示
数据库
中
的数据,被这个问题困扰了很久==…后来突然发现
数据库
的表名与
models
的
类名
没有
对应
:即正确的
对应
关系
应该是
promatch_document:Document
其
中
promatch为app的
名字
,Document在这里是一个类。
解决方法是改变表名 - ALTER TABLE 旧表名 RENAME TO 新表名
另外,字段也需要与
数据库
中
的一一...
django
的
models
django
项目下创建一个app的时候,会自动生成一个
models
文件,
models
采用的是ORM(对象
关系
映射)机制,对于开发者来讲,只需要直接操作类对象,无需关注底层的
数据库
操作,也就是说不用直接操作sql。
首先,我们的blog
中
最重要的是显示文件,那么一定有一个文章类,我们在
models
中
创建一个名为article的文章类:
from
django
.db ...
Model
:负责业务对象和
数据库
对象
Template:负责如何把页面展示给用户 (html页面,相当于MVC里面的View)
View:负责业务逻辑,并在适当的时候调用
Model
和Template (类似于MVC里面的controller)
【注】
DJango
还有一个url分发器,它的作用是将一个个url的页面请求分发给不同的view处理,view...
首先,在
Django
中
创建
model
,需要定义数据表的列和数据类型。例如,我们创建一个名为`Sales`的
model
,其
中
包含两个字段:`date`和`sales`。
```
py
thon
from
django
.db import
models
class Sales(
models
.
Model
):
date =
models
.DateField()
sales =
models
.IntegerField()
然后,在views.
py
中
获取
数据库
中
的数据,将其转换为前端需要的数据格式。例如,我们可以使用
Django
的ORM获取
数据库
中
所有的销售记录,并将其转换为一个列表,其
中
每个元素包含日期和销售额。
```
py
thon
from
django
.shortcuts import render
from .
models
import Sales
def sales_chart(request):
sales_data = Sales.objects.all().values_list('date', 'sales')
chart_data = []
for date, sales in sales_data:
chart_data.append({'date': date.strftime('%Y-%m-%d'), 'sales': sales})
return render(request, 'sales_chart.html', {'chart_data': chart_data})
最后,在前端页面
中
使用Echarts绘制图形。我们可以使用JavaScript编写一个函数,将从views.
py
传递的数据渲染为图表。例如,以下代码将在页面
中
绘制一个折线图,其
中
x轴是日期,y轴是销售额。
```html
<!DOCTYPE html>
<title>Sales Chart</title>
<script src="https://cdn.jsdelivr.net/npm/
[email protected]/dist/echarts.min.js"></script>
</head>
<div id="sales-chart" style="width: 800px; height: 600px;"></div>
<script>
var chartData = JSON.parse('{{ chart_data|escapejs }}');
var chart = echarts.init(document.getElementById('sales-chart'));
var option = {
xAxis: {
type: 'category',
data: chartData.map(function(item) { return item.date; })
yAxis: {
type: 'value'
series: [{
data: chartData.map(function(item) { return item.sales; }),
type: 'line'
chart.setOption(option);
</script>
</body>
</html>
这样,我们就可以在
Django
中
读取
数据库
信息,并在前端使用Echarts绘制图形了。
同样是使用gevent,配合gunicorn,在数据库层面的现象是连接数乱飙,但是配合uWSGI,数据库连接数却很稳定。
可惜django + uWSGI + gevent,在django上不能导入monkey patch,不然django服务起不来。
django 4.2
gevent 23.9.1
uWSGI 2.0.23
gunicorn 21.2.0
postgresql 14.7
psycopg 3.1.16