安裝 MySQL
能夠參考個人這篇博客:MySQL 5.7.21 安裝教程python
由於 Python2的mysql庫爲:mysqldb,而Python3的爲:pymysql,因此要在 Pycharm
中安裝 pymysql
。和以前安裝 django
相似,見下圖:mysql
打開 mysite/settings.py
,找到 DATABASES
,修改紅框裏面的內容:sql
輸入代碼:shell
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysql',
'USER': 'root',
'PASSWORD': 'root',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
複製代碼
若是 NAME
不寫成 mysql
的話,進行下面操做會報錯:數據庫
由於是 Python3
,切記要在同級的 __init__.py
文件添加如下代碼:django
import pymysql
pymysql.install_as_MySQLdb()
複製代碼
而後在 Terminal
中輸入下面命令:瀏覽器
python manage.py migrate
複製代碼
此時又遇到一個報錯:服務器
根據上圖顯示的文件位置找到 operations.py
,修改 decode
爲 encode
便可,大概在 146 行。app
可能也會遇到另外一個錯,把 operations.py
同級的一個名爲 base.py
的文件 3五、36 這兩行註釋掉:spa
再次運行一下上面的命令,會看到:
在這個簡單的投票應用中,須要建立兩個模型:問題 Question
和選項 Choice
。Question
模型包括問題描述和發佈時間。Choice
模型有兩個字段,選項描述和當前得票數。每一個選項屬於一個問題。
編輯 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) # 當前得票數
複製代碼
在文件 mysite/settings.py
中 INSTALLED_APPS
子項添加點式路徑:
'polls.apps.PollsConfig',
複製代碼
結果如紅框所示:
而後在 Terminal
中輸入下面命令:
python manage.py makemigrations polls
複製代碼
將會看到相似於下面這樣的輸出:
下面進行遷移:
python manage.py sqlmigrate polls 0001
複製代碼
將會看到:
再次運行 migrate
命令,在數據庫裏建立新定義的模型的數據表:
python manage.py migrate
複製代碼
改變模型須要這三步:
models.py
文件,改變模型。python manage.py makemigrations
爲模型的改變生成遷移文件。python manage.py migrate
來應用數據庫遷移。在 Terminal
輸入下面命令,進入交互式 Python
命令行:
python manage.py shell
複製代碼
成功進入後,試試 database API 吧,試以前先修改一下 models.py
模型代碼:
# Create your models here.
import datetime
from django.db import models
from django.utils import timezone
class Question(models.Model):
question_text = models.CharField(max_length=200) # 問題描述
pub_date = models.DateTimeField('date published') # 發佈時間
def __str__(self):
return self.question_text
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200) # 選項描述
votes = models.IntegerField(default=0) # 當前得票數
def __str__(self):
return self.choice_text
複製代碼
而後就能夠試試 database API 了:
from polls.models import Choice, Question
Question.objects.all()
from django.utils import timezone
q = Question(question_text="What's new?", pub_date=timezone.now())
q.save()
q.id
q.question_text
q.pub_date
複製代碼
須要退出交互式 Python
命令行時,按 Ctrl+Z
便可。
輸入下面命令:
python manage.py createsuperuser
複製代碼
而後分別輸入用戶名、郵箱、密碼、再次確認。
Django
的管理界面默認就是啓用的。讓咱們啓動開發服務器,看看它究竟是什麼樣的。
若是開發服務器未啓動,用如下命令啓動它:
python manage.py runserver
複製代碼
打開瀏覽器,轉到你本地域名的 "/admin/" 目錄, -- 好比 "http://127.0.0.1:8000/admin/" 。你應該會看見管理員登陸界面:
輸入剛纔註冊的用戶名和密碼,就能進入管理了:
發現投票應用沒在索引頁面裏顯示,因而咱們須要告訴管理頁面,問題 Question
對象須要被管理。打開 polls/admin.py
文件,把它編輯成下面這樣:
from django.contrib import admin
from .models import Question
admin.site.register(Question)
複製代碼
如今咱們向管理頁面註冊了問題 Question
類。Django 知道它應該被顯示在索引頁裏,刷新一下頁面就有了:
點擊 "Questions" 。如今看到是問題 "Questions" 對象的列表 "change list" 。這個界面會顯示全部數據庫裏的問題 Question 對象,你能夠選擇一個來修改。這裏如今有咱們在上一部分中建立的 「What's up?」 問題。
點擊 「What's up?」 來編輯這個問題(Question)對象:
經過點擊 「今天(Today)」 和 「如今(Now)」 按鈕改變 「發佈日期(Date Published)」。而後點擊 「保存並繼續編輯(Save and add another)」按鈕。而後點擊右上角的 「歷史(History)」按鈕。你會看到一個列出了全部經過 Django 管理頁面對當前對象進行的改變的頁面,其中列出了時間戳和進行修改操做的用戶名:
django.db.utils.OperationalError: (1049, "Unknown database 'djangodb'")