博客(1)搭建部分

2018-11-07  本文已影响0人  錦魚

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 文件

上一篇下一篇

猜你喜欢

热点阅读