django版博客项目

一 项目概述
项目运行环境 1 python3.6+ 2 Django 1.11 3 mysql 5.7
项目详细功能介绍
前台功能 1 项目首页展示 2 轮播图 3 博客推荐 4 最新发布 5 博客分类 6 最新评论文章 7 搜索功能 8 博客分类功能 9 博客标签查询 10 友情链接 11 博客分页
二 开发环境搭建
三 创建项目
1 进入虚拟环境创建项目

django-admin startproject django_blog

2 进入项目创建应用

python manage.py startapp userapp
python manage.py startapp blogapp

3 在settings中配置数据库

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'blog_db',
'USER': 'root',
'PASSWORD': '1',
'HOST': '127.0.0.1',
'PORT': '3306',
      }
}

4 执行迁移文件

python manage.py migrate

5 创建超级管理员

python manage.py createsuperuser

四 创建数据模型
userapp

USER(用户模型)

from django.contrib.auth.models import AbstractUser

class BlogUser(AbstractUser):
nikename = models.CharField('昵称', max_length=20, default='')

注:需要在settings配置文件中设置: AUTH_USER_MODEL = 'users.BlogUser'
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 = '友情链接'

五、实现首页页面模板创建模板文件夹
创建模板文件templates,并在settings.py中设置

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]

配置静态文件路径

STATIC_URL = '/static/'

STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)

六、创建首页路由
创建视图函数

def index(request):
    return render(request, 'index.html', {})
  • 配置url
url(r'^index/$', index, name='index' )

七、实现幻灯片功能(Banner)
注册模型

from blogs.models import Banner
admin.site.register(Banner)

编写views

from .models import Banner

def index(request):
    banner_list = Banner.objects.all()
    ctx = {
    'banner_list': banner_list,
}
    return render(request, 'index.html', ctx)

模板






你可能感兴趣的:(django版博客项目)