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


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


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

1
python manage.py validate


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


3.初始化数据库

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

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


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

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

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

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


2.1)进入dbshell,熟悉sqlite3

.help     #帮助

.tables  #查看表

.exit      #退出

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


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

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


2.3)或者这样进入

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


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

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


3)同步数据库

命令

1
python manage.py syncdb


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

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


3.1)初始化之后,查看表

说明:语法和mysql基本相似

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


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

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

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

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


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


5)web查看,并添加数据

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


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

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




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

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

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

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


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

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


3.查看主机values

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


4.增加数据

方法一:

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


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


方法二:

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


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


5.web页面查看

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


6.查看并修改元素

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




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

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

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


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

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


3.web页面查看

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

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



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

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


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

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


3.post方法:

1
curl -d hostname="huangzp5" -d ip="192.168.3.235" http://192.168.2.230:8000/db/


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


结果:

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


浏览器查看

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


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


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

浏览器传值:

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


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


浏览器查看:

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











本文转自 huangzp168 51CTO博客,原文链接:http://blog.51cto.com/huangzp/2057518,如需转载请自行联系原作者