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