文章目录
- 0.创建admin后台管理员账号
- 1.在 admin 后台注册模型
- 2.汉化应用的标题
- 3.汉化应用下各个模块的名称
- 4.汉化应用下各个模块的属性的名称
- 5.文章列表显示更加详细的信息
- 6.简化新增文章的表单
- 7.自动设置文章作者为当前用户
- 8.设定创建时间为当前时间
- 9.设定修改建时间为保存时的时间
0.创建admin后台管理员账号
运行 pipenv run python manage.py createsuperuser
并根据提示以此填入用户名,邮箱,密码等进行注册。
1.在 admin 后台注册模型
文件位置:blog/admin.py
from django.contrib import admin
from .models import Post, Category, Tagadmin.site.register(Post)
admin.site.register(Category)
admin.site.register(Tag)
运行服务器,访问127.0.0.1:8000/admin/ ,结果如下(图中已进行汉化,汉化将在接下来进行说明):
2.汉化应用的标题
文件位置:blog/apps.py
class BlogConfig(AppConfig):name = 'blog'verbose_name = '博客'
文件位置:setting.py
INSTALLED_APPS = ['django.contrib.admin',...'blog.apps.BlogConfig', # 注册 blog 应用
]
效果如下:
3.汉化应用下各个模块的名称
文件位置:blog/models.py
Post 模型:
class Post(models.Model):...author = models.ForeignKey(User, on_delete=models.CASCADE)class Meta:verbose_name = '文章'verbose_name_plural = verbose_namedef __str__(self):return self.title
Tag 和 Category 模型:
class Category(models.Model):name = models.CharField(max_length=100)class Meta:verbose_name = '分类'verbose_name_plural = verbose_namedef __str__(self):return self.nameclass Tag(models.Model):name = models.CharField(max_length=100)class Meta:verbose_name = '标签'verbose_name_plural = verbose_namedef __str__(self):return self.name`
效果如下:
4.汉化应用下各个模块的属性的名称
文件位置:blog/models.py
修改 post 的表单的 label
class Post(models.Model):title = models.CharField('标题', max_length=70)body = models.TextField('正文')created_time = models.DateTimeField('创建时间')modified_time = models.DateTimeField('修改时间')excerpt = models.CharField('摘要', max_length=200, blank=True)category = models.ForeignKey(Category, verbose_name='分类', on_delete=models.CASCADE)tags = models.ManyToManyField(Tag, verbose_name='标签', blank=True)author = models.ForeignKey(User, verbose_name='作者', on_delete=models.CASCADE)
效果如下:
5.文章列表显示更加详细的信息
文件位置:blog/admin.py
from django.contrib import admin
from .models import Post, Category, Tagclass PostAdmin(admin.ModelAdmin):list_display = ['title', 'created_time', 'modified_time', 'category', 'author']# 把新增的 Postadmin 也注册进来
admin.site.register(Post, PostAdmin)
admin.site.register(Category)
admin.site.register(Tag)
效果如下:
6.简化新增文章的表单
文件位置:blog/admin.py
from django.contrib import admin
from .models import Post, Category, Tagclass PostAdmin(admin.ModelAdmin):list_display = ['title', 'created_time', 'modified_time', 'category', 'author']fields = ['title', 'body', 'excerpt', 'category', 'tags']# 把新增的 Postadmin 也注册进来
admin.site.register(Post, PostAdmin)
admin.site.register(Category)
admin.site.register(Tag)
效果如下:
7.自动设置文章作者为当前用户
文件位置:blog/admin.py
from django.contrib import admin
from .models import Post,Category,Tagclass PostAdmin(admin.ModelAdmin):list_display = ['title','created_time','modified_time','category','author']fields = ['title', 'body', 'excerpt', 'category', 'tags']def save_model(self, request, obj, form, change):obj.author = request.usersuper().save_model(request, obj, form, change)admin.site.register(Post, PostAdmin)
admin.site.register(Category)
admin.site.register(Tag)
8.设定创建时间为当前时间
文件位置:blog/models.py
from django.utils import timezoneclass Post(models.Model):...created_time = models.DateTimeField('创建时间', default=timezone.now)...
9.设定修改建时间为保存时的时间
文件位置:blog/models.py
from django.utils import timezoneclass Post(models.Model):...def save(self, *args, **kwargs):self.modified_time = timezone.now()super().save(*args, **kwargs)