二嘴办、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é)構(gòu)
一篇博客包括標題翎卓,內(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é)構(gòu)头谜,表結(jié)構(gòu)出現(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
一個小型的博客完成徙菠,你可以對文章進行編輯與刪除操作。