教学视频:2019最新Django全套教程【千锋Python】
【Python】最近更新:用户交互post通信【从零开始】Django建站+Vuejs前端
一、初始化sqlite数据库
默认在django里面已经配置了sqlite库;
先定义数据库;
数据库表的的定义;
1)
定义一个数据库表:
在models.py文件里面添加如下内容:
class Student(models.Model):
s_name = models.CharField(default='',max_length=15)
此时再次连接数据库会出现报错:
SystemCheckError: System check identified some issues:
ERRORS:
App.Student.s_age: (fields.E210) Cannot use ImageField because Pillow is not installed.
HINT: Get Pillow at https://pypi.org/project/Pillow/ or run command "python -m pip install Pillow".
系统检查错误:系统检查发现一些问题:
错误:
App.Student.s_age:(fields.E210)无法使用ImageField,因为未安装枕头。
提示:请访问https://pypi.org/project/Pillow/获取枕头,或运行命令“python-m pip install Pillow”。
解决方法如下:
Cannot use ImageField because Pillow is not installed.
在命令行中更新数据库即可:
pip install -i https://pypi.douban.com/simple/ Pillow
完成后再次连接数据库:
python manage.py makemigrations
显示成功:
Migrations for ‘App’:
App\migrations\0001_initial.py
- Create model Student
这是发现多了一个文件:是第一场库表
在命令行中输入:
python manage.py migrate
成功结果:
Operations to perform:
Apply all migrations: App, admin, auth, contenttypes, sessions
Running migrations:
Applying App.0001_initial… OK
3)
设置sqlite数据库库管理员账户:
打开控制台:
python manage.py createsuperuser
再次注册自己的账户密码,邮箱可以不填
用户名 (leave blank to use ‘29602’): tianxiaohua
电子邮件地址:
Password:
Password (again):
Error: Your passwords didn’t match.
Password:
Password (again):
密码长度太短。密码必须包含至少 8 个字符。
密码只包含数字。
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
注册完成;
进入界面就可以看到自己的数据库了;
想要看到自己刚刚添加的数据库还需要再admin.py 文件中添加如下代码:
from .models import Student
# Register your models here.
admin.site.register(Student)
此时刷新浏览器中数据库管理界面就可以看到自己的数据库了!
二、对数据库实现增删改查
1)
首先实现在数据库内新增数据并且在网页上显示出来:
还是找到views文件,把原来新建立的index首页增加如下的内容:
在代码的第一行导入模型里面的数据库:
from App.models import Student
如图位置:
def index(request):
student = Student() #在数据库表内定一条新的数据,这条数据的对象是student
student.s_name = "tianxiaohua" #将student对象里面的s_name数据给赋值为tianxiaohua
student.save() #把数据保存到数据库里面
student = Student.objects.all() #建立一个新的对象用来存放数据库里面读取出来的数据
for i in student: #读取出来的数据是一个字典,需要遍历字典来在终端里打印出所有数据
print(i.s_name)
context = { #这是一个用来传递网站后端和前端的一个数据的变量
"hobby":"playgemes",
"students":student
}
return render(request,"index.html",context = context) #返回值中的context是可以显示在网页终端值,该值是一个字典
找到模板templates文件夹中的index.html文件,在里面新增如下内容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>6424无所不能</title>
</head>
<body>
<ul>
<li>今天天气真好</li>
<li>适合睡觉!</li>
<li>快速创建标签的方式是: 例如需要li标签 先打出 li 然后按下Tab</li>
<hi>{{ hobby }}</hi>
</ul>
<ul>
{%for student in students%}
<li>{{student.s_name}}</li>
{%endfor%}
</ul>
</body>
</html>
此时刷新网页:http://127.0.0.1:8000/index/
就会出现如下:
可见数据库以及成功被创建并且读取出来了
查看终端控制台也会发现数据库的内容被全部打印出:
解释:
其实在上述的代码的操作中就已经实现了数据的“增”和“查”的功能,每次刷新主页都会发现多一条数据,而把数据显示在网页上的过程也实现了查看数据库内容的操作。还可以通过查看数据库管理的方式进入admin链接里查看和更改数据库的内容!
2)
实现数据库的删除操作:
这里新建一个网页来专门实现数据库的一条数据的删除操作;
首先新建一条路由:
path('delete/',views.delete_student)
效果如下:
找到views.py文件,添加如下内容:
def delete_student(request):
student = Student.objects.get(pk=4) #找到数据库里面第四条数据
student.delete() #把该条数据删除掉
return HttpResponse("student delete success")
保存后pycharm会重启服务器,来到浏览器输入网址:http://127.0.0.1:8000/delete/
打开网页后就已经实现了删除
打开数据库管理界面:http://127.0.0.1:8000/admin/App/student/
发现已经没有第四条数据了:
3)
更改数据库里面的数据;
这里还是选择新建立一个网页来操作数据库的内容:
找到urls.py文件,在里面增加下面的路由:
path('add/',views.add_student)
改完的效果如下:
找到views.py文件,在下面添加一个函数:
def add_student(request):
student = Student.objects.get(pk= 2) #找到第2条数据
student.s_name = '刘智' #把该条数据改变值
student.save() #保存数据
return HttpResponse("已经成功改名")
改完的效果如下:
保存后等待服务器重启,随后来到浏览器输入网址:http://127.0.0.1:8000/add/
已经改好数据库里面的数据,来到数据库管理网址:http://127.0.0.1:8000/admin/App/student/2/change/
2333333