【小白实战】利用django2.0,搭建属于自己的博客(四)


发布时间:2019-02-15 13:08    作者: Uncle Hui   已过去:1 年,5 月   阅读总量:693 已被赞:0


【模型的创建:blog/models.py:】

创建标签模型和文章模型:

from django.db import models
from django.contrib.auth.models import User #引入django自带用户模块
import django.utils.timezone as timezone #引入时间模块
class Tag(models.Model):
    name =models.CharField(max_length=50,verbose_name='标签名')
    def __str__(self):
        return self.name
    class Meta:  # 后台管理显示汉字,这里必须用Meta
        verbose_name = '标签管理'
        verbose_name_plural = verbose_name

class Post(models.Model):
    title = models.CharField(max_length=100,verbose_name='文章标题')
    context = models.TextField(verbose_name='文章内容')
    author = models.ForeignKey(User,verbose_name='文章作者',on_delete=models.DO_NOTHING)
    tag = models.ForeignKey(Tag,verbose_name='标签',on_delete=models.DO_NOTHING)
    put_in_time = models.DateTimeField(verbose_name='发布时间',default=timezone.now)
    up_to_date = models.DateTimeField(verbose_name='更新时间',auto_now=True)
    def __str__(self):
        return self.title
    class Meta:  # 后台管理显示汉字,这里必须用Meta
        ordering = ['-up_to_date']  #按修改时间倒序排列
        verbose_name = '博文管理'
        verbose_name_plural = verbose_name

【虚拟环境blog2019下执行迁移命令和超级管理员】

(1) 生成迁移脚本文件: python manage.py  makemigrations   (在CMD里 cd到工程文件下)
(2) 映射口令: python manage.py  migrate   (在CMD里 cd到工程文件下)    
 

###创建超级用户
python manage.py createsuperuser  依次输入用户名,邮箱,密码,2次要一样,不少于8位

【模型注册到管理后台admin.py】


from django.contrib import admin
from .models import Tag,Post

# 修改 admin 页面显示标题
admin.site.site_header = "晖哥哥-blog2019"
# 修改 admin 页面头部标题
admin.site.site_title = "晖哥哥-blog2019"

@admin.register(Tag)
class TagAdmin(admin.ModelAdmin):
    '''标签'''
    list_display = ['name']

@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    '''文章'''
    list_display = ['title','author','tag','put_in_time','up_to_date']

【settings.py里设置让模型显示顺序与注册顺序相同】

在最后的位置,直接加入以下代码:

###*****************************************************************
###加入以下代码,可实现让后台模型显示顺序与admin.py里的注册顺序一致,直接粘贴进来,不用修改任何!
from django.apps import apps
from django.contrib import admin
from django.utils.text import capfirst

def find_app_index(app_label):
    app = apps.get_app_config(app_label)
    main_menu_index = getattr(app, 'main_menu_index', 9999)
    return main_menu_index


def find_model_index(name):
    count = 0
    for model, model_admin in admin.site._registry.items():
        if capfirst(model._meta.verbose_name_plural) == name:
            return count
        else:
            count += 1
    return count


def index_decorator(func):
    def inner(*args, **kwargs):
        templateresponse = func(*args, **kwargs)
        app_list = templateresponse.context_data['app_list']
        app_list.sort(key=lambda r: find_app_index(r['app_label']))
        for app in app_list:
            app['models'].sort(key=lambda x: find_model_index(x['name']))
        return templateresponse

    return inner

#django2.0及以上就注释掉这3个,否则打开
# registry = OrderedDict()
# registry.update(admin.site._registry)
# admin.site._registry = registry
admin.site.index = index_decorator(admin.site.index)
admin.site.app_index = index_decorator(admin.site.app_index)
###****************************************************************************

【admin汉化及时间设置settings.py】

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

【启动django,进入后台查看】

点赞

0




登陆后方可评论