一、分析功能模块
要创建一个博客,先需要对整体功能模块进行分析,基本的博客网站包括博客,评论,点赞,阅读,以及用户。
- 博客
- 博文
- 博客分类
- 博客标签
- 评论
- 点赞
- 阅读
- 用户--> 第三方登陆(QQ/微博)
二、创建虚拟环境,实现项目隔离
-
安装第三方包
virtualenv
,使用命令pip install virtualenv
-
创建一个虚拟环境,使用命令
virtualenv mysite_env
-
进入虚拟环境文件夹
cd mysite_env
,激活虚拟环境Scriptsactivate
G:mysite_env>Scriptsactivate
(mysite_env) G:mysite_env>
前面的mysite_env
表示进入了虚拟环境
ps:退出虚拟环境的命令:deactivate
三、开始初步构建项目
- 创建项目名
mysite
,使用命令django-admin startproject mysite
- 进入项目文件夹
cd mysite
,创建博客app
,使用命令python manage.py startapp blog
- 编写博文和博客分类模型
blog models.py
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class BlogType(models.Model):
type_name = models.CharField(max_length=15)
class Blog(models.Model):
title = models.CharField(max_length=50)
blog_type = models.ForeignKey(BlogType, on_delete="models.DO_NOTHING")
content = models.TextField()
author = models.ForeignKey(User, on_delete="models.DO_NOTHING")
created_time = models.DateTimeField(auto_now_add=True)
last_updated_time = models.DateTimeField(auto_now=True)
- 数据库初始化
python manage.py migrate
,创建超级用户python manage.py createsuperuser
- 将应用添加到全局设置中,
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog'
]
-
创建迁移文件
python manage.py makemigrations
,同步数据库python manage.py migrate
. -
注册模型
blogs admin.py
,以使得后台管理页面能显示博文信息
from django.contrib import admin
from .models import Blog,BlogType
# Register your models here.
@admin.register(BlogType)
class BlogTypeAdmin(admin.ModelAdmin):
list_display = ('id', 'type_name')
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
list_display = ('title', 'blog_type', 'author', 'created_time', 'last_updated_time')
- 修改后台管理页面为中文显示
setttings.py
LANGUAGE_CODE = 'zh-Hans'
- 启动服务
python manage.py runserver
,访问后台系统管理页面127.0.0.1:8000/admin
- 添加Blog类型
- 添加Blog文章时发现博客类型未显示出来
- 修改
blog models.py
文件让博客类型显示
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class BlogType(models.Model):
type_name = models.CharField(max_length=15)
def __str__(self):
return self.type_name
class Blog(models.Model):
title = models.CharField(max_length=50)
blog_type = models.ForeignKey(BlogType, on_delete="models.DO_NOTHING")
content = models.TextField()
author = models.ForeignKey(User, on_delete="models.DO_NOTHING")
created_time = models.DateTimeField(auto_now_add=True)
last_updated_time = models.DateTimeField(auto_now=True)
def __str(self):
return "<Blog: %s>" % self.title
- 刷新页面,分类正常显示
- 写第一篇博客
拓展:
安装包的重定向可使用命令pip freeze > requirements.txt
查看requirements.txt
文件
要安装requirements.txt
文件中的包时,可使用pip install requirements.txt