django专题—数据模型、数据库访问、数据传递

四、定义数据模型

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()


1.png


2.检查模型的语法或者逻辑是否有错误

1
python manage.py validate


2.png


3.初始化数据库

1)在项目目录下的setting文件中,可以看到默认数据库为sqllite3,数据库目录在BASE_DIR这层目录,数据库文件名为db.sqlite3

311.png


取两层路径,表示当前脚本上一层目录

312.png

2)查看系统是否安装sqlite3数据库,没有则yum安装

32.png


2.1)进入dbshell,熟悉sqlite3

.help     #帮助

.tables  #查看表

.exit      #退出

321.png


2.2)每次执行登录之后,会自动生成一个db.split3文件,也可以删掉

322.png


2.3)或者这样进入

323.png


2.4)查看数据表,其中id为自动生成

324.png


3)同步数据库

命令

1
python manage.py syncdb


说明:会自动生成一些自带的表,以及认证

33.png


3.1)初始化之后,查看表

说明:语法和mysql基本相似

331.png


4)管理数据,将数据库数据显示在admin页面

修改应用blog下的admin.py文件

说明:先导入表,然后定义一个类,参数为admin模块,继承ModelAdmin方法;列表写表中的字段;注册host表和管理表

1
2
3
class  HostAdmin(admin.ModelAdmin):
     list_display  =  [ "hostname" , "ip" ]
     admin.site.register(Host,HostAdmin)


34.png


5)web查看,并添加数据

35.png


6)数据库上查看添加的数据

36.png




五、交互式方法,访问数据库

1.web项目下,进入python shell,和ipython差不多,多了些环境变量

说明:在其他目录下,看不到web路径

1.png


2.导入Host表,查看主机以及相关方法

2.png


3.查看主机values

3.png


4.增加数据

方法一:

1
2
3
4
=  Host(hostname = "huangzp2" ,ip = "192.168.2.232" )
n.save()
nodes  =  Host.objects. all ()
nodes.values()


41.png


方法二:

1
2
3
4
5
6
=  Host()
n.hostname  =  "huangzp3"
n.ip  =  "192.168.3.233"
n.save()
node  =  Host.objects. all ()
node.values()


42.png


5.web页面查看

5.png


6.查看并修改元素

6.png




六、视图文件views.py访问数据

1.修改web项目下urls.py文件,添加url访问路径

1.png


2.blog下的views.py文件,定义方法方法(相当于命令行)

2.png


3.web页面查看

3.png

32.png



七、数据传递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"

1.png


2.注释web目录下setting.py文件中的中间件,启用第三方工具方法访问

clipboard.png


3.post方法:

1
curl -d  hostname = "huangzp5"  -d ip= "192.168.3.235"  http: //192 .168.2.230:8000 /db/


3.png


结果:

32.png


浏览器查看

33.png


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" )


34.png

浏览器传值:

1
192.168.2.230:8000 /db/ ? hostname =huangzp6&ip=192.168.3.236


35.png


浏览器查看:

36.png











本文转自 huangzp168 51CTO博客,原文链接:http://blog.51cto.com/huangzp/2057518,如需转载请自行联系原作者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值