小手一抬,就能用 Python Django 實現(xiàn)一個微型博客系統(tǒng)

二、Python Django 微型博客

通過簡單的操作,就可以在 Django 中實現(xiàn)一個博客 應用

2.1 用模板生成文件

進入到 上篇博客創(chuàng)建的目錄中,執(zhí)行下述命令。

django-admin startapp blog
# 也可以使用下述命令
python manage.py startapp blog

命令運行之后,生成的目錄如下。

相關文件說明如下:

blog # 根目錄
    __init__.py
    admin.py # 后臺管理
    apps.py # 應用設置相關
    models.py # 模型,數(shù)據(jù)庫相關
    tests.py # 測試相關
    views.py # 視圖相關
    migrations # 數(shù)據(jù)庫變更記錄文件夾

接下來修改 my_website 文件夾中的 settings.py 文件,添加 blog 應用,具體代碼如下,重點是最后一行。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'blog', # 這里是非常重要的
]

在 Django 中,如果希望應用模型、靜態(tài)文件、模板這些內(nèi)容,需要在 INSTALLED_APPS 添加對應的應用目錄,如果沒有設置,應用不會進行加載。

2.2 創(chuàng)建文章模型與數(shù)據(jù)庫結(jié)構

一篇博客包括標題,內(nèi)容,發(fā)布時間等內(nèi)容,這些都在 Django 中進行創(chuàng)建,核心要修改的是 models.py 文件。

from django.db import models

# Create your models here.
class Blog(models.Model):
    title = models.CharField("標題", max_length=100)
    content = models.TextField("內(nèi)容")
    creatr_time = models.DateField("發(fā)布時間")

該類就是模型類,實現(xiàn)一個模型類,需要繼承自 models.Model 類,該類用于進行數(shù)據(jù)庫中數(shù)據(jù)和 Python 對象之間的轉(zhuǎn)換操作。

下面將 Blog 類反射到 sqlite3 數(shù)據(jù)庫中,本階段請以模仿為主,后續(xù)會為你補充完整相應的知識框架。

manage.py 所在的文件夾中運行下述命令:

python manage.py makemigrations blog

該命令用于檢查 blog 中模型文件的變更,由于在上文我們創(chuàng)建了一個 Blog 類,所以 models.py 文件被修改,當執(zhí)行上述命令時,會輸出如下內(nèi)容。

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

提示的信息也為 Create model Blog,提示創(chuàng)建了一個 Blog 類,下面將 models.py 中的內(nèi)容在 sqlite3 創(chuàng)建出來,使用的命令為 python manage.py migrate blog,運行結(jié)果如下:

> python manage.py migrate blog
Operations to perform:
  Apply all migrations: blog
Running migrations:
  Applying blog.0001_initial... OK

2.3 創(chuàng)建管理后臺

下面通過簡單的步驟實現(xiàn)對 blog 表的管理,Django 自帶用戶認證系統(tǒng),通過命令 python manage.py migrate 即可實現(xiàn)。

> python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying sessions.0001_initial... OK

該命令創(chuàng)建一些列的數(shù)據(jù)庫表結(jié)構,表結(jié)構出現(xiàn)之后,還需要創(chuàng)建登錄賬號,用到的核心命令是 python manage.py createsuperuser。

> python manage.py createsuperuser
Username (leave blank to use 'administrator'): xiangpica
Email address: dream@163.com
Password:
Password (again):
The password is too similar to the username.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

準備工作實現(xiàn)完畢,對 admin.py 文件進行修改,注意 admin.py 文件的位置以及模塊之間的調(diào)用關系。

from django.contrib import admin
from blog.models import Blog
# Register your models here.

@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
    pass

在正式運行之前,還需要修改一下網(wǎng)頁展示中英文內(nèi)容,打開 setting.py 文件,修改如下內(nèi)容。

# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'

準備工作完成,控制臺運行下述命令 python manage.py runserver

> python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
March 24, 2021 - 22:22:33
Django version 3.1.7, using settings 'my_website.settings'
Starting development server at http://127.0.0.1:8000/

此時打開默認頁面,展示的內(nèi)容如下:

修改訪問地址為:http://127.0.0.1:8000/admin,出現(xiàn)登錄窗口,使用上文注冊的賬號即可訪問。

輸入一些文章相關信息進行保存之后,返回列表頁面,出現(xiàn)一個小細節(jié),橙色框內(nèi)的數(shù)據(jù)是一個 Blog object,不是文章的標題,繼續(xù)修改代碼。

修改 modes.py 文件,修改內(nèi)容如下:

from django.db import models

# Create your models here.
class Blog(models.Model):
    title = models.CharField("標題", max_length=100)
    content = models.TextField("內(nèi)容")
    creatr_time = models.DateField("發(fā)布時間")

    def __str__(self):
        return self.title

一個小型的博客完成,你可以對文章進行編輯與刪除操作。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容