models的基本使用
基本用法
models
是数据操作的API。不需要直接使用SQL语句进行对应表的创建等操作。
- 在
settings.py
中配置数据库连接相关信息,如驱动、IP地址、用户名、密码等。 - 在
models.py
中定义数据库表名称及字段信息。 在Terminal中执行下面命令执行
models.py
中定义的语句,在数据库中建表。1
2python manage.py makemigrations
python manage.y migrate此时在数据库可以查看到创建的表信息。
实例
django 自带 sqlite 数据库,已经在 settings.py 中配置好了,可直接使用,以使用 sqlite 为例子。
- 在 models.py 中定义表及字段信息
1
2
3class UserInof(models.Model):
username=models.CharField(max_length=32, null=True)
password=models.CharField(max_length=32, null=True)
此处类名为表名,类中定义的为各个字段名及属性。
在 Terminal 中执行命令
1
2python manage.py makemigrations
python manage.y migrate此时在左侧将会出现
db.sqlite3
文件,将其拖至右侧边栏的 Database ,即可看到 sqlite 数据库信息
以demo_*
开头的为新建的表,auth_*
和django_*
为 django 自带的表。
- 数据查询及绑定
sqlite
数据插入
在右侧展示的数据库中双击对应的demo_userinof
,即可打开对应的数据库表
此处 id
列会自动生成并自增,不需要手动输入。views.py
定义数据查询1
2
3
4
5
6
7
8
9
10def login(request):
if request.method == 'GET':
a = [1,]
# obj_li = models.UserInof.objects.all() # 查询所有
obj_li = models.UserInof.objects.filter(username='test') # 条件查询
for item in obj_li:
print('username--->', item.username)
print('password--->', item.password)
return render(request, 'login.html', locals())
/templates/login.html
数据绑定1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo01</title>
</head>
<body>
<h1>{{ a.0 }}</h1>
{% for item in obj_li %}
<div>
<span>{{ item.username }}</span>
<span>{{ item.password }}</span>
</div>
{% endfor %}
</body>
</html>
此处数据绑定展示,效果如下
1
是通过定义变量列表直接传入。
用户名和密码通过 for
循环绑定。
django基础命令
创建 django project,名称为
mysite
1
django-admin.py startproject mysite
在 mysite 目录下创建应用,名称为
blog
1
python manage.py startapp blog
启动 django 项目
1
python manage.py runserver 8080
更改数据库表或字段
1
2python manage.py makemigrations
python manage.py migrate
django 1.7.1 以下版本使用python manage.py syncdb
命令。
清空数据库
1
python manage.py flush
创建超级管理员
1
2python manage.py createsuperuser # 按提示输入用户名和密码,邮箱可不输入
python manage.py changepassword username # 修改用户密码Django 项目环境终端
1
python manage.py shell
显示数据库版本信息并在命令行下启动数据库的命令行工具
1
python manage.py dbshell
通过 python manage.py
可以看到更多的用法。