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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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/

class Host(models.Model):
    hostname = models.CharField(max_length=50)
    ip = models.IPAddressField()


技术分享图片技术分享图片


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

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)同步数据库

命令

python manage.py syncdb


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

技术分享图片技术分享图片


3.1)初始化之后,查看表

说明:语法和mysql基本相似

技术分享图片技术分享图片


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

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

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

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.增加数据

方法一:

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


技术分享图片技术分享图片


方法二:

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访问方法

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方法:

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


技术分享图片技术分享图片


结果:

技术分享图片技术分享图片


浏览器查看

技术分享图片技术分享图片


4.get方法:

或者else req.GET,因为前者在访问ip/db/时可能会报错

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


技术分享图片技术分享图片

技术分享图片

浏览器传值:

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


技术分享图片技术分享图片


浏览器查看:

技术分享图片技术分享图片


以上是关于django专题—数据模型数据库访问数据传递的主要内容,如果未能解决你的问题,请参考以下文章

Django

将模型属性传递给 Django 中的 URL

在 django 中访问模型数据

访问django formset数据

Django 模板未从数据库呈现

分布式技术专题「OSS中间件系列」Minio的文件服务的存储模型及整合Java客户端访问的实战指南