Django入门(四) 简单操作数据库
2016-03-12 11:28
393 查看
经过前面三节的练习,我们已经可以将一个页面动态的展现给用户了。但是真正动态语言还需要连接数据库,将数据库中的内容读取出来呈现在给客户。这一节我们就来实现简单的读写数据库,对数据库进行增删改查等操作。
前面我们讲过django有一个全局的配置文件settings.py,这个文件位于子目录myjango下面。通过这个文件我们可以指定mydjango这个项目使用的数据库类型以及数据库的连接信息。
![](http://s5.51cto.com/wyfs02/M01/7D/23/wKioL1bg9JCQ0Yx4AABPVJpZyLM905.png)
默认的使用的数据库类型是sqlite3,这里我就不做修改了。如果想连接oracle或者mysql等数据库类型可以自行百度一下。
数据库连接的问题解决之后,我们下一步就是对数据库进行创建表的操作了。django中对数据库的操作有一个专门文件models.py,它位于每个app应用目录的下面,负责管理这个应用的数据库操作。
![](http://s3.51cto.com/wyfs02/M00/7D/24/wKiom1bg9f_i7VrAAAAx0oqw-no475.png)
编辑这个文件
models.py
编辑结束之后,我们通过同步数据库的命令创建刚才定义的表。在命令行下输入两条命令
1、python manage.py makemigrations
![](http://s1.51cto.com/wyfs02/M01/7D/24/wKiom1bg-m2gA-h7AAAdH5R4Sig858.png)
这个命令相当于创建了表的源数据,执行完这条命令并没有真正的把表创建出来。只是在app01目录下的
migrations目录下创建了一个初始化文件
![](http://s5.51cto.com/wyfs02/M02/7D/23/wKioL1bg-7DBuTB4AAAabq3Rfhg140.png)
2、python manage.py migrate
![](http://s4.51cto.com/wyfs02/M00/7D/24/wKiom1bg-4vguFivAABT1-7sofo225.png)
这个命令是根据上一步创建的源文件里的规则,把我们定义的表真的的写到数据库里。
如何来查看表是否按照我的需求创建成功了呢?我们可以通过第三方的工具连接数据库进行查看,也可以使用django自带的方法。对查看数据库的内容。我们来设置一下。在app01目录下找到admin.py
![](http://s2.51cto.com/wyfs02/M02/7D/25/wKiom1bhALCDAQo2AAATmc7OT1g791.png)
编辑文件的内容
admin.py
![](http://s1.51cto.com/wyfs02/M01/7D/23/wKioL1bhA-mRzxKaAAAN69Kv4K4746.png)
![](http://s4.51cto.com/wyfs02/M01/7D/23/wKioL1bhAmGxck_dAAAWb0zECT0760.png)
接着我们要登录到后台,还需要在通过命令创建后台管理页面的账号和密码
python manage.py createsuperuser
![](http://s5.51cto.com/wyfs02/M02/7D/25/wKiom1bhAxSiJJwSAABTZ_qsIpk034.png)
密码长度不能低于8位
再次重新登录输入用户名和密码 我们就可以进入后台页面了。并且可以看到我们刚才刚才创建的userinfo表
![](http://s2.51cto.com/wyfs02/M02/7D/24/wKioL1bhBXujax_VAAA1f_cS8Mg807.png)
这个表被默认添加了一个's'变成userinfos了(不知道为什么),不过使用的时候还是要用userinfo表这个名字。点进去之后我们就可以对这个表添加数据了
![](http://s5.51cto.com/wyfs02/M00/7D/24/wKioL1bhBnrx2m4fAAA6SYKx9To796.png)
到这里,表和表里的数据我们就添加完了。接下来我们要通过自己都编写的页面实现对数据库的简单读写。
首先在template目录下新建一个manageruser.index文件。在文件里需要有用户名和密码输入框。一个按钮还有一个表格。并且表格需要用到模版语言能够动态的显示指定的内容。
manageruser.html
第二步就是要去app01目录下编辑views.py。我们知道浏览器对web框架发起请求有两种方式get和post。
默认的请求是get方式,而我们刚才已经定义了涉及表单内容的提交的内容请求采用post方式。那现在我们就来根据需求编写用到的manageruser()函数。
views.py
最后一步就是要去mydjango子目录的urls.py中添加页面和函数的绑定关系了
urls.py
最后启动服务程序,查看页面运行情况
![](http://s5.51cto.com/wyfs02/M02/7D/3D/wKioL1bjiviAoHxUAAAVAdV2Cyg089.png)
因为默认采用的是GET方法访问页面,所以我们看到了数据库里刚刚创建的用户。我们在用户名和密码栏中输入一个新的数据。点击提交按钮出发POST方法访问看看能否将新数据写入数据库
![](http://s3.51cto.com/wyfs02/M00/7D/3F/wKiom1bji1qwXnf0AAARL_RYfRM466.png)
提交之后我们看到新的数据已经写入了数据库
![](http://s2.51cto.com/wyfs02/M02/7D/3D/wKioL1bjjEmRjtX2AAAVlase3rg724.png)
现在我们就完成了通过Django简单操作数据库并将数据库内容展现在页面的操作
备注:如果点击提交按钮的时候出现403错误,这是因为django的中间件有一条伪造跨站请求导致的,现阶段我们可以禁用这条配置。修改mydjango子目录的下的settings.py内容如下:
![](http://s5.51cto.com/wyfs02/M01/7D/50/wKioL1bmHx3T9c5FAACUDSFbmrk430.png)
修改之后,再点击提交按钮就不会出现403错误了
前面我们讲过django有一个全局的配置文件settings.py,这个文件位于子目录myjango下面。通过这个文件我们可以指定mydjango这个项目使用的数据库类型以及数据库的连接信息。
![](http://s5.51cto.com/wyfs02/M01/7D/23/wKioL1bg9JCQ0Yx4AABPVJpZyLM905.png)
默认的使用的数据库类型是sqlite3,这里我就不做修改了。如果想连接oracle或者mysql等数据库类型可以自行百度一下。
数据库连接的问题解决之后,我们下一步就是对数据库进行创建表的操作了。django中对数据库的操作有一个专门文件models.py,它位于每个app应用目录的下面,负责管理这个应用的数据库操作。
![](http://s3.51cto.com/wyfs02/M00/7D/24/wKiom1bg9f_i7VrAAAAx0oqw-no475.png)
编辑这个文件
models.py
# !/usr/local/env python # coding:utf-8 from __future__ import unicode_literals # 首先要导入models方法 from django.db import models # Create your models here. """ 编写一个类,类里的参数必须是(models.Model) 类的名字就是要在数据库创建的表名字 """ class userinfo(models.Model): """ 这里的user和passwd就是表中要创建的字段名 models.CharField表示要创建的字段类型是字符串类型的 如果创建字符窜类型那么括号里必须指定字符串长度 """ user = models.CharField(max_length=30) passwd = models.CharField(max_length=30)
编辑结束之后,我们通过同步数据库的命令创建刚才定义的表。在命令行下输入两条命令
1、python manage.py makemigrations
![](http://s1.51cto.com/wyfs02/M01/7D/24/wKiom1bg-m2gA-h7AAAdH5R4Sig858.png)
这个命令相当于创建了表的源数据,执行完这条命令并没有真正的把表创建出来。只是在app01目录下的
migrations目录下创建了一个初始化文件
![](http://s5.51cto.com/wyfs02/M02/7D/23/wKioL1bg-7DBuTB4AAAabq3Rfhg140.png)
2、python manage.py migrate
![](http://s4.51cto.com/wyfs02/M00/7D/24/wKiom1bg-4vguFivAABT1-7sofo225.png)
这个命令是根据上一步创建的源文件里的规则,把我们定义的表真的的写到数据库里。
如何来查看表是否按照我的需求创建成功了呢?我们可以通过第三方的工具连接数据库进行查看,也可以使用django自带的方法。对查看数据库的内容。我们来设置一下。在app01目录下找到admin.py
![](http://s2.51cto.com/wyfs02/M02/7D/25/wKiom1bhALCDAQo2AAATmc7OT1g791.png)
编辑文件的内容
admin.py
# !/usr/bin/env python # coding:utf-8 from django.contrib import admin # Register your models here. #导入自定义的表名 from app01 import models admin.site.register(models.userinfo)这样我们就可以访问app01的数据库后台页面了
![](http://s1.51cto.com/wyfs02/M01/7D/23/wKioL1bhA-mRzxKaAAAN69Kv4K4746.png)
![](http://s4.51cto.com/wyfs02/M01/7D/23/wKioL1bhAmGxck_dAAAWb0zECT0760.png)
接着我们要登录到后台,还需要在通过命令创建后台管理页面的账号和密码
python manage.py createsuperuser
![](http://s5.51cto.com/wyfs02/M02/7D/25/wKiom1bhAxSiJJwSAABTZ_qsIpk034.png)
密码长度不能低于8位
再次重新登录输入用户名和密码 我们就可以进入后台页面了。并且可以看到我们刚才刚才创建的userinfo表
![](http://s2.51cto.com/wyfs02/M02/7D/24/wKioL1bhBXujax_VAAA1f_cS8Mg807.png)
这个表被默认添加了一个's'变成userinfos了(不知道为什么),不过使用的时候还是要用userinfo表这个名字。点进去之后我们就可以对这个表添加数据了
![](http://s5.51cto.com/wyfs02/M00/7D/24/wKioL1bhBnrx2m4fAAA6SYKx9To796.png)
到这里,表和表里的数据我们就添加完了。接下来我们要通过自己都编写的页面实现对数据库的简单读写。
首先在template目录下新建一个manageruser.index文件。在文件里需要有用户名和密码输入框。一个按钮还有一个表格。并且表格需要用到模版语言能够动态的显示指定的内容。
manageruser.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div class="container"> {# 定义表单提交的时候采用POST方式提交,并且提交之后还是跳转回本页。#} {# 相当于提交之后刷新自己#} <form action="/manageruser/" method="post"> <div class="form-group"> <label>用户名</label> # 通过name="xxx"来给输入框定义一个标识,会用到这个表示来区分输入框的内容#} <input type="text" class="form-control" name="username" placeholder="请输入用户名"> </div> <div class="form-group"> <label>密码</label> <input type="password" class="form-control" name="passwd" placeholder="请输入密码"> </div> <div class="form-group"> <label class="sr-only">按钮</label> <input class="btn btn-primary" type="submit" value="提交"> </div> <table class="table table-bordered"> <thead> <tr> <th>用户名</th> <th>密码</th> </tr> </thead> <tbody> {# views.py中的manageruser()函数会读取数据库中指定的数据#} {# 并传递给userinfo#} {% for line in userinfo %} <tr> {# 模板语言每次读取一行数据#} {# 并根据model.py指定的数据库表中的字段名来获取对应的值#} <td>{{ line.user }}</td> <td>{{ line.passwd }}</td> </tr> {% endfor %} </tbody> </table> </form> </div> </body> </html>
第二步就是要去app01目录下编辑views.py。我们知道浏览器对web框架发起请求有两种方式get和post。
默认的请求是get方式,而我们刚才已经定义了涉及表单内容的提交的内容请求采用post方式。那现在我们就来根据需求编写用到的manageruser()函数。
views.py
def manageruser(request): # 首先判断页面的请求方式 #如果是POST就表明有表单内容要提交 if request.method=='POST': #根据html文件里输入框的name属性所定义的值来获取数据 username=request.POST['username'].strip() passwd=request.POST['passwd'].strip() #实现添加用户功能 models.userinfo.objects部分是标准搭配必须要存在 # 通过django操作数据库必须以这部分开头,后面的create()是参数 models.userinfo.objects.create(user=username, passwd=passwd) #实现删除指定用户功能 #models.userinfo.objects.filter(user=username).delete() # 实现更新指定用户密码的功能 #models.userinfo.objects.filter(user=username).update(passwd=passwd) #如果是GET就表示只是普通的浏览请求,不对数据库进行任务操作 else: pass #最后将数据库的全部内容都读入到user_info中 userinfo= models.userinfo.objects.all() #将页面最终的内容传递给用户,传递的同时将获取的数据库内容传入给html的userinfo变量 return render(request,'manageruser.html',{'userinfo':userinfo})
最后一步就是要去mydjango子目录的urls.py中添加页面和函数的绑定关系了
urls.py
from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^index/$', views.index), url(r'^user/$', views.user), url(r'^manageruser/$', views.manageruser), ]
最后启动服务程序,查看页面运行情况
![](http://s5.51cto.com/wyfs02/M02/7D/3D/wKioL1bjiviAoHxUAAAVAdV2Cyg089.png)
因为默认采用的是GET方法访问页面,所以我们看到了数据库里刚刚创建的用户。我们在用户名和密码栏中输入一个新的数据。点击提交按钮出发POST方法访问看看能否将新数据写入数据库
![](http://s3.51cto.com/wyfs02/M00/7D/3F/wKiom1bji1qwXnf0AAARL_RYfRM466.png)
提交之后我们看到新的数据已经写入了数据库
![](http://s2.51cto.com/wyfs02/M02/7D/3D/wKioL1bjjEmRjtX2AAAVlase3rg724.png)
现在我们就完成了通过Django简单操作数据库并将数据库内容展现在页面的操作
备注:如果点击提交按钮的时候出现403错误,这是因为django的中间件有一条伪造跨站请求导致的,现阶段我们可以禁用这条配置。修改mydjango子目录的下的settings.py内容如下:
![](http://s5.51cto.com/wyfs02/M01/7D/50/wKioL1bmHx3T9c5FAACUDSFbmrk430.png)
修改之后,再点击提交按钮就不会出现403错误了
相关文章推荐
- DB2编程序技巧 (四)
- PostgreSQL新手入门教程
- Ajax PHP简单入门教程代码
- Nodejs学习笔记之入门篇
- javascript每日必学之基础入门
- Bootstrap入门书籍之(五)导航条、分页导航
- Bootstrap入门书籍之(三)栅格系统
- Bootstrap入门书籍之(一)排版
- jQuery入门 构造函数
- jQuery入门介绍之基础知识
- 针对初学者的jQuery入门指南
- jquery 指南/入门基础
- JDBCTM 指南:入门
- struts2入门Demo示例
- django中使用jquery ajax post数据出现403错误的解决办法(两种方法)
- django使用ajax post数据出现403错误如何解决
- JSP入门教程(4)
- JSP入门教程(3)
- 杏林同学录(四)
- PHP的FTP学习(四)