django-admin.py startPRoject mysitemysite/ #項目的名稱 manage.py #可通過命令和項目進行交互的文件 mysite/ #項目的實際文件夾 __init__.py #空文件,告訴python這個目錄是個python包 settings.py #該項目的配置文件 urls.py #項目的URL聲明,dispatch文件 wsgi.py #項目wscgi的一個入口只用于開發環境,不能用于生產環境!
開發環境支持熱啟動
python manage.py runserver #default 8000#如果主機想訪問虛擬機需要指定ip和端口python manage.py runserver 0.0.0.0:8000需求MySQLdb
pip2.7 install mysql-python -i http://pypi.douban.com/simplesettings.py文件中進行設置
#mysql的數據庫必須提前建好DATABASES = { 'default': {# 'ENGINE': 'django.db.backends.sqlite3',# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test', 'USER': 'root', 'PASSWord': '123456', 'HOST': '127.0.0.1', 'PORT': '3306', }}#修改時區#TIME_ZONE = 'UTC'TIME_ZONE = 'Asia/Shanghai'#默認appsINSTALLED_APPS = ( 'django.contrib.admin', #管理頁面 'django.contrib.auth', #權限系統 'django.contrib.contenttypes', #內容框架 'django.contrib.sessions', #回話框架 'django.contrib.messages', #消息框架 'django.contrib.staticfiles', #管理靜態內容框架)#此命令會安裝上述的app,并生成對應的表,在此建立系統管理員帳號和密碼python manage.py syncdbapp完成某個特定的功能,諸如微博系統,公共記錄數據庫亦或是一個簡單的投票程序。
project是若干配置文件與許多app組成的特殊網站。
project可以包含很多app,app也可用于多個project。
python manage.py startapp polls這會生成
polls/ __init__.py admin.py models.py tests.py views.py首先應該定義模型。
模型是關于數據的獨立、限定的資源。它包括要存儲的數據的必要的字段和行為。
Django遵循DRY原則,即Don't repeat youself——每一個獨立的概念或數據都存儲在一個地方,并且存儲一份。
定義所有的模型,關于投票,創建投票和選擇兩個模型,投票包括一個問題和一個發起日期,選擇包括選擇的內容和投票計數。每一個選擇應該關聯一個投票。
from django.db import models class Poll(models.Model): question = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') class Choice(models.Model): poll = models.ForeignKey(Poll) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)每個模型對應一個類,每個類繼承自models.Model,每個類對應一張表。
每個類成員對應該表的列,并且有自己的類型。有些參數是必須的例如max_length,它不只是數據庫的模式,還包括頁面的驗證。而整數類型的默認值是可選的。
最后類之間的關系用外鍵來描述。該處需要注意的是,poll會自動處理為poll_id加到
首先應該在settings.py中添加該應用。
INSTALL_APPS = ( ... ... 'polls',)然后鍵入命令,觀察models生成的SQL語句。
python manage.py sql polls這里有一些額外的命令可以觀察實際的構成。
python manage.py validate #檢查錯誤,尤其是構建apps的model后檢查,再運行syncdb之前python manage.py sqlcustom polls #輸出應用定義的custom sql statementpython manage.py sqlclear polls #輸出應用中有必要DROP TABLE的語句python manage.py sqlindexes pollspython manage.py sqlall polls #輸出sql sqlcustom sqlindexes的集合然后要實際運行這些語句,在數據庫中實際建立他們。該語句只用于初次創建時
python manage.py syncdb#進入互動界面python manage.py shell>>> from polls.models import Poll, Choice#顯示所有實例>>> Poll.objects.all()[]>>> from django.utils import timezone#創建一個對象>>> p = Poll(question="What's new?", pub_date=timezone.now())#存入數據庫>>> p.save()#可使用p.question等修改,查看類成員函數,修改后再次save即可>>> Poll.objects.all()[<Poll: Poll object>] #這是由于__unicode__沒有設置的結果,class Poll(models.Model): # ... def __unicode__(self): # Python 3: def __str__(self): return self.question#這樣即可輸出>>> Poll.objects.all()[<Poll: What's new?>]#查找數據庫,filter(類成員名稱后雙下劃線,可以加入各種比較)#get可直接用來查找,其中pk可用來查找主鍵,PrivateKey>>> Poll.objects.filter(question__startswith='What')[<Poll: What's up?>]>>> current_year = timezone.now().year>>> Poll.objects.get(pub_date__year=current_year)<Poll: What's up?>因為Poll是Choice的外鍵,所以Poll有如下的成員函數
>>> p.choice_set.all()[]>>> c = p.choice_set.create(choice_text='Just hacking again', votes=0)>>> p.choice_set.all()[<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]>>> p.choice_set.count()3# Choice也有如下的成員變量>>> c.poll<Poll: What's up?>#刪除某個記錄>>> c = p.choice_set.filter(choice_text__startswith='Just hacking')>>> c.delete()新聞熱點
疑難解答