1 . 基本准备
1 . 开发环境搭建
使用 virtualenv 和 virtualenwrapper
2 . MySQL 5.7
sudo apt install mysql-server mysql-client
3 . 安装mysql驱动
pip install pymysql
4 . 安装Django
pip install django==1.11
2 . 创建项目
1 . 创建项目和应用
创建项目
django-admin startproject django-blog
创建应用
python manage.py startapp userapp python manage.py startapp blogapp
2 . 配置数据库
- 在settings中配置数据库
- __init__.py 文件加载pymysql
3 . 创建数据库(执行迁移文件)
python manage.py migrate
4 . 创建超级管理员
python manage.py createsuperuser
3. 创建数据模型
1. USERAPP
USER(用户模型) ---------- userapp / models.py
from django.contrib.auth.models import AbstractUser class BlogUser(AbstractUser): nikename = models.CharField('昵称', max_length=20, default='')
- 提示:需要在settings配置文件中设置 : AUTH_USER_MODEL = 'userapp.BlogUser'
EMAIL(邮箱验证数据模型) ---------- userapp / models.py
#email验证 class EmailVerifyRecord(models.Model): code = models.CharField(verbose_name='验证码',max_length=50,default='') email = models.EmailField(verbose_name='邮箱',max_length=50) send_time = models.DateTimeField(verbose_name='发送时间',default=datetime.now) type = ( ('register','注册'), ('forget','找回密码'), ('update_email','修改邮箱') ) send_type = models.CharField(verbose_name='验证码类型',choices=type,max_length=30)) class Meta: verbose_name = '邮箱验证码' verbose_name_plural = verbose_name def __str__(self): return '邮箱是{0},验证码是({1})'.format(self.email,self.code)
2 . BLOGAPP
Banner(轮播图模型)
class Banner(models.Model): title = models.CharField('标题', max_length=50) cover = models.ImageField('轮播图', upload_to='static/images/banner') link_url = models.URLField('图片链接', max_length=100) idx = models.IntegerField('索引') is_active = models.BooleanField('是否是active', default=False) def __str__(self): return self.title class Meta: verbose_name = '轮播图' verbose_name_plural = '轮播图'
Category(博客分类模型)
class BlogCategory(models.Model): name = models.CharField('分类名称', max_length=20, default='') class Meta: verbose_name = '博客分类' verbose_name_plural = '博客分类' def __str__(self): return self.name
Tags(标签模型)
class Tags(models.Model): name = models.CharField('标签名称', max_length=20, default='') class Meta: verbose_name = '标签' verbose_name_plural = '标签' def __str__(self): return self.name
Blog(博客模型)
class Post(models.Model): user = models.ForeignKey(BlogUser, verbose_name='作者') category = models.ForeignKey(BlogCategory, verbose_name='博客分类', default=None) tags = models.ManyToManyField(Tags, verbose_name='标签') title = models.CharField('标题', max_length=50) content = models.TextField('内容') pub_date = models.DateTimeField('发布日期', default=datetime.now) cover = models.ImageField('博客封面', upload_to='static/images/post', default=None) views = models.IntegerField('浏览数', default=0) recommend = models.BooleanField('推荐博客', default=False) def __str__(self): return self.title class Meta: verbose_name = '博客' verbose_name_plural = '博客'
Comment(评论模型)
class Comment(models.Model): post = models.ForeignKey(Post, verbose_name='博客') user = models.ForeignKey(BlogUser, verbose_name='作者') pub_date = models.DateTimeField('发布时间') content = models.TextField('内容') def __str__(self): return self.content class Meta: verbose_name = '评论' verbose_name_plural = '评论'
FriendlyLink(友情链接模型)
class FriendlyLink(models.Model): title = models.CharField('标题', max_length=50) link = models.URLField('链接', max_length=50, default='') def __str__(self): return self.title class Meta: verbose_name = '友情链接' verbose_name_plural = '友情链接'
4 . 添加前端模板
导入html,css,js,img,font 文件
网友评论