尊重作者的勞動,轉載請註明作者及原文地址 http://www.cnblogs.com/txwsqk/p/6511177.html
完全翻譯自官方文件 https://docs.djangoproject.com/en/1.10/intro/tutorial02/
這章講資料庫相關
在settings.py的資料庫配置中預設是使用sqllite,如果只是用來練手那麼你不用修改資料庫的配置
# Database # https://docs.djangoproject.com/en/1.10/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
如果要用mysql,就是下面的配置
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test', # 資料庫名稱 'USER': 'root', 'PASSWORD': 'password', 'HOST': '127.0.0.1', } }
別忘了修改下配置檔案的時區和語言
LANGUAGE_CODE = 'zh-hans' # django 1.10種要用zh-hans,如果用zh-cn會報錯 TIME_ZONE = 'Asia/Shanghai'
django預設載入的apps(settings.py中的INSTALLED_APPS)需要用到資料庫,下面我們先建立需要用的庫和表
python manage.py migrate
下面在應用中建立資料庫模型 polls/models.py
from django.db import models class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)
django支援資料庫的外來鍵: 多對一,多對多,一對一
關於Field的具體內容請參考 https://docs.djangoproject.com/en/1.10/ref/models/fields/#django.db.models.Field
要是我們的model被django發現,需要在INSTALLED_APPS中新增我們的應用
INSTALLED_APPS = [ 'pools', 'suit', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
suit這個應用是django admin的一個擴充套件,可以讓django的admin介面更好看,推薦!!!
下面有幾個命令要說明一下
python manage.py makemigrations polls #在本地生成一個檔案 ,記錄你的model的變動 python manage.py sqlmigrate polls 0001 # 詳細顯示出django根據這次修改的model.py檔案 實際要做的事,它只是列印一下內容,而不會實際去修改資料庫 python manage.py migrate # 執行這個命令,你的資料庫就根據你的models.py完成修改了
python manager.py check # 檢查你的model.py
如果你要修改你的模型models.py 記住3個步驟
1. 修改你的models.py 2. 執行 python manage.py makemigrations 3. python manage.py migrate 應用修改
最好為你的每個模型新增__str__()方法,這會讓你的模型的輸出更加友好
不然可能是這樣的輸出
>>> Question.objects.all()
<QuerySet [<Question: Question object>]>
所以請新增__str__()方法
from django.db import models from django.utils.encoding import python_2_unicode_compatible @python_2_unicode_compatible # 相容python2 class Question(models.Model): # ... def __str__(self): return self.question_text @python_2_unicode_compatible class Choice(models.Model): # ... def __str__(self): return self.choice_text
然後它會這麼顯示
# Make sure our __str__() addition worked. >>> Question.objects.all() <QuerySet [<Question: What's up?>]>
django自帶管理後臺,可以方便的檢視和修改資料庫內容
我們先建立後臺介面的管理員賬戶
python manage.py createsuperuser #根據提示輸入使用者名稱,郵箱,密碼
現在可以訪問後臺介面了 http://127.0.0.1:8000/admin/
如果你想通過後臺展示你的模型,修改應用裡的admin.py
from django.contrib import admin from .models import Question admin.site.register(Question)
本節完