前言
在Python中,最知名的ORM非SQLAlchemy莫属了,同时,Django作为一款功能丰富的框架,其中也内置了专属的ORM,其语法逻辑与SQLAlchemy十分相似,有过SQLAlchemy使用经验的可以很容易上手。SQLAlchemy基础使用参考:Python ORM :SQLAlchemy基础使用
一、常用字段类型
1 |
|
二、常见字段参数
1 |
|
三、表结构创建
在django程序子目录或主目录创建models.py文件,在该文件内定义表结构,比如创建一个主机表,创建方式如下:
1 | from django.db import models |
cmd输入:
1 | python manage.py makemigrations #检测表结构变化 |
django默认使用的是自带的sqlite,使用Navicat连接此sqlite路径,登录查看表结构:
四、增删改查
在前端写几个简单的增删改查的表格,往后端提交数据,后端在同级目录views.py中引入model.py对前端请求进行处理:
后端views.py:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86from cmdb import models
def addhost(request):
ref=request.META.get('HTTP_REFERER')
print(request.POST)
if request.method == "POST":
obj_info={
'hostname' : request.POST.get("hostname"),
'host_ip' : request.POST.get("host_ip"),
'owner_name' : request.POST.get("owner_name"),
'owner_id' : request.POST.get("owner_id"),
'asset_tag' : request.POST.get("asset_tag"),
'online_time' : request.POST.get("online_time"),
'OS' : request.POST.get("OS"),
'OS_type' : request.POST.get("OS_type"),
'off_time' : request.POST.get("off_time"),
'SN' : request.POST.get("SN"),
'brand' : request.POST.get("brand"),
'memory' : int(request.POST.get("mem")),
'CPU_num' : int(request.POST.get("CPU_num")),
}
models.Host.objects.create(**obj_info)
return redirect(ref)
def search(request):
if request.method=="GET":
Owner=request.GET.get('Owner',None)
print(Owner)
sear_res=models.Host.objects.filter(owner_name=Owner)
print(sear_res)
return render(request,'cmdb_index.html',{"search_result":sear_res})
def delete(request):
ref=request.META.get('HTTP_REFERER')
nid=int(request.POST.get('nid'))
models.Host.objects.filter(id=nid).delete()
return redirect(ref)
def modify(request):
res={"status":True,"error":False,"data":None}
ref=request.META.get('HTTP_REFERER')
if request.method=='POST':
try:
obj_info={
'hostname' : request.POST.get("hostname"),
'host_ip' : request.POST.get("host_ip"),
'owner_name' : request.POST.get("owner_name"),
'owner_id' : request.POST.get("owner_id"),
'asset_tag' : request.POST.get("asset_tag"),
'online_time' : request.POST.get("online_time"),
'OS' : request.POST.get("OS"),
'OS_type' : request.POST.get("OS_type"),
'off_time' : request.POST.get("off_time"),
'SN' : request.POST.get("SN"),
'Brand' : request.POST.get("Brand"),
'memory' : int(request.POST.get("memory")),
'CPU_num' : int(request.POST.get("CPU_num")),
}
nid=request.POST.get('Asset_ID')
models.Host.objects.filter(id=int(nid)).update(**obj_info)
except Exception as e:
res['error']=e
res['status']=False
return HttpResponse(json.dumps(res))
前端代码就不贴了,涉及到一些ajax的操作,后面再整理一下ajax的基本操作.