您的位置:首页 > 数据库

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

2018-01-04 20:54 387 查看
四、定义数据模型
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/[/code] href="http://192.168.2.230:8000/db/" target=_blank>





结果:





浏览器查看





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