1、新建一個項目
django-admin.py startproject ****
2、進入到該項目
cd ***
3、新建一個應用
django-admin.py startapp **
將我們新建的應用(people)添加到 settings.py 中的 INSTALLED_APPS中,也就是告訴Django有這么一個應用
INSTALLED_APPS
=
(
'django.contrib.admin'
,
'django.contrib.auth'
,
'django.contrib.contenttypes'
,
'django.contrib.sessions'
,
'django.contrib.messages'
,
'django.contrib.staticfiles'
,
'people'
,
)
class
Person(models.Model):
name
=
models.CharField(max_length
=
30
)
age
=
models.IntegerField()
def
__unicode__(
self
):
# 在Python3中使用 def __str__(self)
return
self
.name
>>>
from
people.models
import
Person
>>> Person.objects.create(name
=
"WeizhongTu"
, age
=
24
)
<Person: Person
object
>
>>>
>>> Person.objects.get(name
=
"WeizhongTu"
)
<Person: WeizhongTu
>
>>>
新建一個對象的方法有以下幾種:
-
Person.objects.create(name=name,age=age)
-
p = Person(name="WZ", age=23)
p.save()
-
p = Person(name="TWZ")
p.age = 23
p.save()
-
Person.objects.get_or_create(name="WZT", age=23)
這種方法是防止重復很好的方法,但是速度要相對慢些,返回一個元組,第一個為Person對象,第二個為True或False, 新建時返回的是True, 已經存在時返回False.
獲取對象有以下方法:
-
Person.objects.all()
-
Person.objects.all()[:10] 切片操作,獲取10個人,不支持負索引,切片可以節約內存
-
Person.objects.get(name=name)
get是用來獲取一個對象的,如果需要獲取滿足條件的一些人,就要用到filter
-
Person.objects.filter(name="abc") # 等於Person.objects.filter(name__exact="abc") 名稱嚴格等於 "abc" 的人
-
Person.objects.filter(name__iexact="abc") # 名稱為 abc 但是不區分大小寫,可以找到 ABC, Abc, aBC,這些都符合條件
-
Person.objects.filter(name__contains="abc") # 名稱中包含 "abc"的人
-
Person.objects.filter(name__icontains="abc") #名稱中包含 "abc",且abc不區分大小寫
-
Person.objects.filter(name__regex="^abc") # 正則表達式查詢
-
Person.objects.filter(name__iregex="^abc")# 正則表達式不區分大小寫
-
filter是找出滿足條件的,當然也有排除符合某條件的
-
Person.objects.exclude(name__contains="WZ") # 排除包含 WZ 的Person對象
-
Person.objects.filter(name__contains="abc").exclude(age=23) # 找出名稱含有abc, 但是排除年齡是23歲的