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


浏览器查看:


原文:http://blog.51cto.com/huangzp/2057518