07 构建个人博客网站
2020-05-06 本文已影响0人
CurryCoder
技术交流QQ群:1027579432,欢迎你的加入!
本教程来源于B站杨仕航Django2.0开发视频教程,如需转载,必须注明来源!
1.简单构建
- 网站的功能模块约等于Django App
- 博客
- 博文
- 博客分类
- 博客标签
- 评论
- 阅读
- 用户 -->第三方登录(QQ或者微博)
- 点赞
- 博客
2.开启本地虚拟环境
- 隔离python项目的运行环境:pip install virtualenv
- 避免多个项目之间python库的冲突
- 完整便捷导出python的列表
3.virtualenv的使用方法
- 创建: virtualenv mysite_env(虚拟环境名)
- 启动: Scripts文件目录下,执行activate
- 退出:执行deactivate
- 安装Django2.0:pip install Django==2.0
4.初步创建blog应用
- 博文 + 博客分类(一篇博客属于一种类型[本教程采用这种],一篇博客属于多种类型)
- 创建项目:启动虚拟环境后,执行django-admin startproject mysite
- 创建应用:mysite文件目录下执行,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)
- 对数据库进行初始化:在mysite文件夹下,执行python manage.py migrate
- 创建管理员账户和登录密码:在mysite文件夹下,执行python manage.py createsuperuser
E:\Django\mysite_env\Scripts\mysite $ python manage.py createsuperuser Username (leave blank to use 'administrator'): CurryCoder Email address: Password: Password (again): Superuser created successfully.
- 将刚刚创建的应用blog加入到全局配置文件settings.py中,如下所示:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', ]
- 创造迁移文件:在mysite文件夹下,执行python manage.py makemigrations,如下所示:
E:\Django\mysite_env\Scripts\mysite $ python manage.py makemigrations Migrations for 'blog': blog\migrations\0001_initial.py - Create model Blog - Create model BlogType - Add field blog_type to blog
- 对数据库进行同步:在mysite文件夹下,执行python manage.py migrate,如下所示:
E:\Django\mysite_env\Scripts\mysite $ python manage.py migrate Operations to perform: Apply all migrations: admin, auth, blog, contenttypes, sessions Running migrations: Applying blog.0001_initial... OK
- 注册模型:打开blog文件夹下的admin.py文件,添加如下内容:
from django.contrib import admin from .models import BlogType, Blog # 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')
- 打开全局配置文件settings.py,将当中的LANGUAGE_CODE变量值改为'zh-Hans',此时已对后台管理页面进行了汉化。
- 启动本地服务:python manage.py runserver,打开浏览器,输入网址localhost:8000/admin进入后台管理页面。
- 当新增博文时,无法显示blog_type博文类型,如下所示。因此需要打开blog文件夹下的models.py文件,添加__str()__方法,如下内容所示:
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)
context = 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
出现的bug.png
bug已解决.png
5.pip一键导出和安装
- 一键导出:pip freeze > requiresment.txt
- 一键安装:pip install -r requiresment.txt