小手哆嗦一下,就能用 Python Django 实现一个微型博客系统
【摘要】
橡皮擦,一个逗趣的互联网高级网虫。新的系列,让我们一起进入 Django 世界。
滚雪球学 Python 第三轮
二、Python Django 微型博客2.1 用模板生成文件2.2 创建文章模型与数据库结构2.3 创建管理后台
二、Python Django 微型博客
通过简单的操作,就可以在 Django 中实现一个博客 应用
2....
橡皮擦,一个逗趣的互联网高级网虫。新的系列,让我们一起进入 Django 世界。
二、Python Django 微型博客
通过简单的操作,就可以在 Django 中实现一个博客 应用
2.1 用模板生成文件
进入到 上篇博客 创建的目录中,执行下述命令。
django-admin startapp blog
# 也可以使用下述命令
python manage.py startapp blog
命令运行之后,生成的目录如下。
相关文件说明如下:
blog # 根目录
__init__.py
admin.py # 后台管理
apps.py # 应用设置相关
models.py # 模型,数据库相关
tests.py # 测试相关
views.py # 视图相关
migrations # 数据库变更记录文件夹
接下来修改 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 中,如果希望应用模型、静态文件、模板这些内容,需要在 INSTALLED_APPS
添加对应的应用目录,如果没有设置,应用不会进行加载。
2.2 创建文章模型与数据库结构
一篇博客包括标题,内容,发布时间等内容,这些都在 Django 中进行创建,核心要修改的是 models.py
文件。
from django.db import models
# Create your models here.
class Blog(models.Model): title = models.CharField("标题", max_length=100) content = models.TextField("内容") creatr_time = models.DateField("发布时间")
该类就是模型类,实现一个模型类,需要继承自 models.Model
类,该类用于进行数据库中数据和 Python 对象之间的转换操作。
下面将 Blog 类反射到 sqlite3
数据库中,本阶段请以模仿为主,后续会为你补充完整相应的知识框架。
在 manage.py
所在的文件夹中运行下述命令:
python manage.py makemigrations blog
该命令用于检查 blog
中模型文件的变更,由于在上文我们创建了一个 Blog 类,所以 models.py
文件被修改,当执行上述命令时,会输出如下内容。
>python manage.py makemigrations blog
Migrations for 'blog':
blog\migrations\0001_initial.py - Create model Blog
提示的信息也为 Create model Blog
,提示创建了一个 Blog
类,下面将 models.py
中的内容在 sqlite3
创建出来,使用的命令为 python manage.py migrate blog
,运行结果如下:
> python manage.py migrate blog
Operations to perform:
Apply all migrations: blog
Running migrations:
Applying blog.0001_initial... OK
2.3 创建管理后台
下面通过简单的步骤实现对 blog 表的管理,Django 自带用户认证系统,通过命令 python manage.py migrate
即可实现。
> 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
该命令创建一些列的数据库表结构,表结构出现之后,还需要创建登录账号,用到的核心命令是 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.
准备工作实现完毕,对 admin.py
文件进行修改,注意 admin.py
文件的位置以及模块之间的调用关系。
from django.contrib import admin
from blog.models import Blog
# Register your models here.
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin): pass
在正式运行之前,还需要修改一下网页展示中英文内容,打开 setting.py
文件,修改如下内容。
# 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/
此时打开默认页面,展示的内容如下:
修改访问地址为:http://127.0.0.1:8000/admin,出现登录窗口,使用上文注册的账号即可访问。
输入一些文章相关信息进行保存之后,返回列表页面,出现一个小细节,橙色框内的数据是一个 Blog object
,不是文章的标题,继续修改代码。
修改 modes.py
文件,修改内容如下:
from django.db import models
# Create your models here.
class Blog(models.Model): title = models.CharField("标题", max_length=100) content = models.TextField("内容") creatr_time = models.DateField("发布时间") def __str__(self): return self.title
一个小型的博客完成,你可以对文章进行编辑与删除操作。
相关阅读
今天是持续写作的第 118 / 200 天。
如果你想跟博主建立亲密关系,可以关注同名公众号 梦想橡皮擦,近距离接触一个逗趣的互联网高级网虫。
博主 ID:梦想橡皮擦,希望大家点赞、评论、收藏。
文章来源: blog.csdn.net,作者:梦想橡皮擦,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/hihell/article/details/115186744
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)