Django學習筆記02 | 編寫一個Django應用02

1、安裝 MySQL 並在 Pycharm 安裝 pymysql

安裝 MySQL 能夠參考個人這篇博客:MySQL 5.7.21 安裝教程python

由於 Python2的mysql庫爲:mysqldb,而Python3的爲:pymysql,因此要在 Pycharm 中安裝 pymysql 。和以前安裝 django 相似,見下圖:mysql

2、數據庫配置

打開 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 ,修改 decodeencode 便可,大概在 146 行。app

可能也會遇到另外一個錯,把 operations.py 同級的一個名爲 base.py 的文件 3五、36 這兩行註釋掉:spa

再次運行一下上面的命令,會看到:

3、建立模型

在這個簡單的投票應用中,須要建立兩個模型:問題 Question 和選項 ChoiceQuestion 模型包括問題描述和發佈時間。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) # 當前得票數
複製代碼

4、激活模型

在文件 mysite/settings.pyINSTALLED_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 來應用數據庫遷移。

5、初試 API

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 便可。

6、建立一個管理員帳號

輸入下面命令:

python manage.py createsuperuser
複製代碼

而後分別輸入用戶名、郵箱、密碼、再次確認。

7、啓動開發服務

Django 的管理界面默認就是啓用的。讓咱們啓動開發服務器,看看它究竟是什麼樣的。

若是開發服務器未啓動,用如下命令啓動它:

python manage.py runserver
複製代碼

打開瀏覽器,轉到你本地域名的 "/admin/" 目錄, -- 好比 "http://127.0.0.1:8000/admin/" 。你應該會看見管理員登陸界面:

輸入剛纔註冊的用戶名和密碼,就能進入管理了:

8、向管理頁面中加入投票應用

發現投票應用沒在索引頁面裏顯示,因而咱們須要告訴管理頁面,問題 Question 對象須要被管理。打開 polls/admin.py 文件,把它編輯成下面這樣:

from django.contrib import admin

from .models import Question

admin.site.register(Question)
複製代碼

9、體驗便捷的管理功能

如今咱們向管理頁面註冊了問題 Question 類。Django 知道它應該被顯示在索引頁裏,刷新一下頁面就有了:

點擊 "Questions" 。如今看到是問題 "Questions" 對象的列表 "change list" 。這個界面會顯示全部數據庫裏的問題 Question 對象,你能夠選擇一個來修改。這裏如今有咱們在上一部分中建立的 「What's up?」 問題。

點擊 「What's up?」 來編輯這個問題(Question)對象:

經過點擊 「今天(Today)」 和 「如今(Now)」 按鈕改變 「發佈日期(Date Published)」。而後點擊 「保存並繼續編輯(Save and add another)」按鈕。而後點擊右上角的 「歷史(History)」按鈕。你會看到一個列出了全部經過 Django 管理頁面對當前對象進行的改變的頁面,其中列出了時間戳和進行修改操做的用戶名:

10、致謝

編寫你的第一個 Django 應用,第 2 部分

Pycharm數據庫鏈接錯誤

django.db.utils.OperationalError: (1049, "Unknown database 'djangodb'")

相關文章
相關標籤/搜索