您的位置:首页 > 数据库

Django入门(四)   简单操作数据库

2016-03-12 11:28 393 查看
经过前面三节的练习,我们已经可以将一个页面动态的展现给用户了。但是真正动态语言还需要连接数据库,将数据库中的内容读取出来呈现在给客户。这一节我们就来实现简单的读写数据库,对数据库进行增删改查等操作。

前面我们讲过django有一个全局的配置文件settings.py,这个文件位于子目录myjango下面。通过这个文件我们可以指定mydjango这个项目使用的数据库类型以及数据库的连接信息。



默认的使用的数据库类型是sqlite3,这里我就不做修改了。如果想连接oracle或者mysql等数据库类型可以自行百度一下。

数据库连接的问题解决之后,我们下一步就是对数据库进行创建表的操作了。django中对数据库的操作有一个专门文件models.py,它位于每个app应用目录的下面,负责管理这个应用的数据库操作。



编辑这个文件
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



这个命令相当于创建了表的源数据,执行完这条命令并没有真正的把表创建出来。只是在app01目录下的
migrations目录下创建了一个初始化文件





2、python manage.py migrate



这个命令是根据上一步创建的源文件里的规则,把我们定义的表真的的写到数据库里。

如何来查看表是否按照我的需求创建成功了呢?我们可以通过第三方的工具连接数据库进行查看,也可以使用django自带的方法。对查看数据库的内容。我们来设置一下。在app01目录下找到admin.py



编辑文件的内容
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的数据库后台页面了






接着我们要登录到后台,还需要在通过命令创建后台管理页面的账号和密码
python manage.py createsuperuser



密码长度不能低于8位

再次重新登录输入用户名和密码 我们就可以进入后台页面了。并且可以看到我们刚才刚才创建的userinfo表



这个表被默认添加了一个's'变成userinfos了(不知道为什么),不过使用的时候还是要用userinfo表这个名字。点进去之后我们就可以对这个表添加数据了



到这里,表和表里的数据我们就添加完了。接下来我们要通过自己都编写的页面实现对数据库的简单读写。

首先在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),
]


最后启动服务程序,查看页面运行情况




因为默认采用的是GET方法访问页面,所以我们看到了数据库里刚刚创建的用户。我们在用户名和密码栏中输入一个新的数据。点击提交按钮出发POST方法访问看看能否将新数据写入数据库



提交之后我们看到新的数据已经写入了数据库



现在我们就完成了通过Django简单操作数据库并将数据库内容展现在页面的操作

备注:如果点击提交按钮的时候出现403错误,这是因为django的中间件有一条伪造跨站请求导致的,现阶段我们可以禁用这条配置。修改mydjango子目录的下的settings.py内容如下:


修改之后,再点击提交按钮就不会出现403错误了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  入门 Django