Python核心編程筆記————Web框架:Django(一)


書上的知識與現實已經有差距了,不過好在Django有自帶的教程:Django文檔

Django安裝

預備條件

. 在安裝Django之前,需要先安裝python,Apache(安裝過程無法正常啓動服務時戳),數據庫(標準版的Django只可運行於基於SQL的關係數據庫管理系統,主要的四種是:PostgreSQL、 MySQL、 Oracle 和 SQLite。)

安裝

. Django 自稱是“能夠很好地應對應用上線期限的 Web 框架”,在21世紀初發布。有多種方式安裝Django,最簡單的是使用Python包管理工具,如easy_install或pip,只需要在命令行窗口輸入一行命令(配好python和python下的Scipts環境變量):

pip install django

項目和應用

. 對Django來說,可以認爲項目是一系列文件,用來創建並運行一個完整的web站點,在項目這個文件夾下,有一個或多個子文件夾,每個子文件夾有特定的功能,稱爲應用。

創建項目

. Django安裝成功的話,在python的Scripts文件夾下會有django-admin的exe文件和py文件,接下來可以在其他地方新建文件夾作爲Django項目的存放目錄,使用命令行窗口輸入:

django-admin.py startproject xxx					//xxx是項目名

在存放目錄中會創建以項目名命名的文件夾,其中有名爲manage.py和同名子文件夾,子文件夾下有基本的幾個python文件,其意思如下:

文件名 描述
_init_.py 告訴python這是一個軟件包
urls.py 全局 URL 配置(“URLconf”)
settings.py 項目相關的配置
manage.py 管理 Django 項目的命令行工具
wsgi.py 作爲你的項目的運行在 WSGI 兼容的Web服務器上的入口

運行開發服務器

. 通過項目中的manage.py工具,可以用下面這個簡單的命令運行開發服務器:

python manage.py runserver

. 在瀏覽器中打開鏈接(http://127.0.0.1:8000/ 或 http://localhost:8000/) 可以看到成功頁面。

創建應用

. 既然擁有了一個項目,就可以在其中創建應用,繼續使用manage.py:

python manage.py startapp blog							//應用名隨意

. 創建完成後在同級目錄下會有一個blog文件夾,與項目類似,應用也是一個Python包,但是models.py和views.py都還沒有代碼,需要開發者自己今後添加。
. 爲了讓項目知道這個應用是它的一部分,需要編輯setting.py,找到文中的INSTALLED_APPS 元祖,在最後添加點路徑:

INSTALLED_APPS = [
    ...
    'blog.apps.BlogConfig',
]

創建模型來添加數據庫服務

. 接下來將在model.py中定義數據結構,遵循的規則是‘不要自我重複’,Django可以從爲應用提供的模型信息中獲得很多好處。
. 數據模型表示將會存儲在數據庫每條記錄中的數據類型。Django提供很多字段用來將數據映射到應用中,例如:

from django.db import models

# Create your models here.
class BlogPost(models.Model):
    title = models.CharField(max_length=150)            #較短的單行文本
    body = models.TextField()                           #較長的文本
    timestamp = models.DateTimeField()

. 這是一個完整的博文模型對象,其中有三個字段(準確的說是四個字段,還有一個是Django默認創建的,該字段可自動遞增,且每個模型中唯一)。這個類中的字段就像普通的類屬性那樣定義,每個都是特定字段類的實例,每個實例對應數據庫中的一條記錄。

設置數據庫

. 首先先建立一個空的數據庫,設置好用戶(最好給這個用戶足夠的權限)和密碼,這裏用的是mysql。有了空的數據庫後,剩下的就是通知Django來使用它,此時將用到項目中過的settings.py文件。將其中與數據庫連接的信息部分更改一下:

DATABASES = {
    'default': {
        #'ENGINE': 'django.db.backends.sqlite3',
        #'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'testdb',
        'USER': 'test',
        'PASSWORD': '1234',
        'HOST': '',
        'PORT': '',
    }
}

創建表

. 接下來通知Django使用上面的信息來連接數據庫,設置應用程序需要的表。首先需要添加應用,在命令行中使用:

>python manage.py makemigrations blog
Migrations for 'blog':
  blog\migrations\0001_initial.py
    - Create model BlogPost

接着使用migrate來自動創建表

python manage.py migrate

. 這個 migrate 命令檢查 INSTALLED_APPS 設置,爲其中的每個應用創建需要的數據表,至於具體會創建什麼,這取決於你的 mysite/settings.py 設置文件和每個應用的數據庫遷移文件

Python應用Shell

. 在Django中使用Python Shell,可以實例化模型,並與應用交互,使用如下命令啓動shell:

python manage.py shell

. 接下來就可以操作數據庫了,首先在數據庫中新建了一張表名爲blog_BlogPost,創建了4個字段,在model中有提到(id,title,body,timestamp),Django模型屬性和Mysql數據庫屬性對應,然後在shell中可以開始啦:

>>> from datetime import datetime
>>> from blog.models import BlogPost
>>> BlogPost.objects.all()
<QuerySet []>
>>>bp = BlogPost(title = 'test',body = 'hello world!',timestamp = datetime.now())
>>> bp
<BlogPost: BlogPost object (1)>
>>> bp.save()
>>> BlogPost.objects.count()
1
>>> bp = BlogPost.objects.all()[0]
>>> print(bp.title)
test
>>> print(bp.body)
hello world!
>>> bp.timestamp.ctime()
'Tue Aug 20 10:31:46 2019'

. 與此同時,也能在數據庫的可視化工具中找到相關的記錄了。

使用admin管理應用

創建一個管理員賬號

. 登錄管理界面需要一個超級用戶,按照如下步驟創建:

>python manage.py createsuperuser
Username (leave blank to use 'xx'): xxxx
Email address: [email protected]
Password:
Password (again):
This password is too short. It must contain at least 8 characters.
This password is entirely numeric.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

啓動開發服務器

. 使用如下命令啓動服務器:

python manage.py runserver

. 接着登錄http://127.0.0.1:8000/admin/,就會打開登錄界面,進入管理界面後還看不到自己創建的應用,需要在admin.py中進行添加:

from django.contrib import admin
from .models import BlogPost

# Register your models here.
admin.site.register(BlogPost)

. 重新登錄界面後能看到自己創建的應用了,可以通過點擊來進行編輯和管理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章