美文网首页
博客(1)搭建部分

博客(1)搭建部分

作者: 錦魚 | 来源:发表于2018-11-07 11:51 被阅读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 文件

    相关文章

      网友评论

          本文标题:博客(1)搭建部分

          本文链接:https://www.haomeiwen.com/subject/ytbmxqtx.html