文章目錄
- 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)