四、定义数据模型
MVC中的V就是应用下的views.py和templates,C就是项目下的urls.py文件
MVC模型中的M是应用blog下的modles.py文件,专门定义数据库
1.应用目录blog下,modles.py文件定义数据表
说明:数据类型定义方式,在官网中有说明,如ip地址类型:https://docs.djangoproject.com/en/dev/
1
2
3
|
class Host(models.Model):
hostname = models.CharField(max_length = 50 )
ip = models.IPAddressField()
|
2.检查模型的语法或者逻辑是否有错误
1
|
python manage.py validate |
3.初始化数据库
1)在项目目录下的setting文件中,可以看到默认数据库为sqllite3,数据库目录在BASE_DIR这层目录,数据库文件名为db.sqlite3
取两层路径,表示当前脚本上一层目录
2)查看系统是否安装sqlite3数据库,没有则yum安装
2.1)进入dbshell,熟悉sqlite3
.help #帮助
.tables #查看表
.exit #退出
2.2)每次执行登录之后,会自动生成一个db.split3文件,也可以删掉
2.3)或者这样进入
2.4)查看数据表,其中id为自动生成
3)同步数据库
命令
1
|
python manage.py syncdb |
说明:会自动生成一些自带的表,以及认证
3.1)初始化之后,查看表
说明:语法和mysql基本相似
4)管理数据,将数据库数据显示在admin页面
修改应用blog下的admin.py文件
说明:先导入表,然后定义一个类,参数为admin模块,继承ModelAdmin方法;列表写表中的字段;注册host表和管理表
1
2
3
|
class HostAdmin(admin.ModelAdmin):
list_display = [ "hostname" , "ip" ]
admin.site.register(Host,HostAdmin)
|
5)web查看,并添加数据
6)数据库上查看添加的数据
五、交互式方法,访问数据库
1.web项目下,进入python shell,和ipython差不多,多了些环境变量
说明:在其他目录下,看不到web路径
2.导入Host表,查看主机以及相关方法
3.查看主机values
4.增加数据
方法一:
1
2
3
4
|
n = Host(hostname = "huangzp2" ,ip = "192.168.2.232" )
n.save() nodes = Host.objects. all ()
nodes.values() |
方法二:
1
2
3
4
5
6
|
n = Host()
n.hostname = "huangzp3"
n.ip = "192.168.3.233"
n.save() node = Host.objects. all ()
node.values() |
5.web页面查看
6.查看并修改元素
六、视图文件views.py访问数据
1.修改web项目下urls.py文件,添加url访问路径
2.blog下的views.py文件,定义方法方法(相当于命令行)
3.web页面查看
七、数据传递post和get
1.应用目录下views.py定义POST访问方法
1
2
3
4
5
6
7
8
9
10
|
def db(req):
print req
if req.POST:
hostname = req.POST.get( "hostname" )
ip = req.POST.get( "ip" )
host = Host()
host.hostname = hostname
host.ip = ip
host.save()
return HttpResponse( "OK" )
|
说明:req.POST 或者 req.method == "POST"
2.注释web目录下setting.py文件中的中间件,启用第三方工具方法访问
3.post方法:
1
|
curl -d hostname = "huangzp5" -d ip= "192.168.3.235" http: //192 .168.2.230:8000 /db/
|
结果:
浏览器查看
4.get方法:
或者else req.GET,因为前者在访问ip/db/时可能会报错
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
def db(req):
print req
if req.POST:
hostname = req.POST.get( "hostname" )
ip = req.POST.get( "ip" )
host = Host()
host.hostname = hostname
host.ip = ip
host.save()
return HttpResponse( "OK" )
elif req.method = = "get" :
hostname = req.GET.get( "hostname" )
ip = req.GET.get( "ip" )
host = Host()
host.hostname = hostname
host.ip = ip
host.save()
return HttpResponse( "OK" )
else :
HttpResponse( "no data" )
|
浏览器传值:
1
|
192.168.2.230:8000 /db/ ? hostname =huangzp6&ip=192.168.3.236
|
浏览器查看: