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專題—數據模型、數據庫訪問、數據傳遞