最近在更新之前用djang建的网站,淌过了不少坑,在这里记录下。
第一篇更新,主要关于django设置和后台设置
新建django项目
命令行中输入
django-admin startproject test
cd test
进入test目录,文件结构如下
新建app应用
命令行中输入
python manage.py startapp test1
python manage.py startapp test2
建2个应用(对比用),应用建立后文件结构如下
请忽略migrations。。。settings中设置
创建应用后要将应用加入testout/settings.py,让django知道有这两个应用
Paste_Image.pngsettings中这部分可以按需要修改,LANGUAGE_CODE 将后台语言改成中文简体,TIME_ZONE 将使用时区改成东8区(就是北京时间),如果用不着时区可以将USE_TZ 设成False
应用中建立模型
test1的models.py文件中建立如下模型
from django.db import models
class Category(models.Model):
name=models.CharField(max_length=100)
def __str__(self):
return self.name
class Tag(models.Model):
name=models.CharField(max_length=100)
class BlogPost(models.Model):
title=models.CharField(max_length=200,verbose_name='标题')
body = models.TextField()
created_time = models.DateTimeField()
category = models.ForeignKey(Category,blank=True)
tag = models.ManyToManyField(Tag,blank=True)
class Meta:
verbose_name='文章'
verbose_name_plural='文章'
test2的models.py中建立如下模型
from django.db import models
class Category(models.Model):
name=models.CharField(max_length=100)
将模型管理加入后台
在test1中的admin.py将test1中models加入后台
from django.contrib import admin
from .models import BlogPost,Category,Tag
@admin.register(BlogPost)
class PostAdmin(admin.ModelAdmin):
list_display = ['title', 'created_time','category',]
list_display_links = ('title', 'category')
search_fields = ('title',)
date_hierarchy = 'created_time'
list_filter = ('category',)
ordering = ('created_time', 'title')
list_per_page = 20
fields = (('title','category'),'body','created_time','tag')
filter_horizontal = ('tag',)
class CatAdmin(admin.ModelAdmin):
list_display = ['name']
admin.site.register(Category,CatAdmin) #效果和上面@admin.register(BlogPost)一样
admin.site.register(Tag)
在test2中的admin.py将test2中models.py加入后台
from django.contrib import admin
from .models import Category
admin.site.register(Category)
更改后台中应用显示名称
test1中apps.py更改如下
from django.apps import AppConfig
class AdmintestConfig(AppConfig):
name = 'test1'
verbose_name='测试1'
test1中init.py加入以下设置
default_app_config= 'test1.apps.AdmintestConfig'
设置效果解释
进入后台后显示
红色圈出是应用名,通过在apps.py中加入verbose_name 改变了后台显示应用的名称。
蓝色圈出的应用中的模型名称,通过在models.py在定义模型时定义Meta类更改了在后台显示的模型的名称。
class Meta:
verbose_name='文章'
verbose_name_plural='文章'
在<测试1>中的categorys,tags,文章中增加几个数据。
进入<测试1>的categorys,tags,会看下一下对比。
红色圈出部分,因为category模型中的
def __str__(self):
return self.name
后台显示时会显示category模型的name字段,而tag中是显示object。
进入<测试1>的文章
在创建模型时有如下设置
class BlogPost(models.Model):
title=models.CharField(max_length=200,verbose_name='标题')
#将title字段在后台显示名称改为'标题',如蓝色圈出位置所示
在将模型加入admins.py时有如下设置
class PostAdmin(admin.ModelAdmin):
list_display = ['title', 'created_time','category',] # 设置显示字段,如红色框中显示
list_display_links = ('title', 'category') #设置显示字段链接,如蓝色框中显示
search_fields = ('title',) #设置可以搜索字段,在位置①
date_hierarchy = 'created_time' #设置可通过时间筛选,在位置③
list_filter = ('category',) #设置可用过category字段筛选,在位置②
ordering = ('created_time', 'title') #设置默认按'created_time', 'title'排序,如箭头所示
list_per_page = 20 #设置每页显示数量
进入第一篇文章,
class PostAdmin(admin.ModelAdmin):
fields = (('title','category'),'body','created_time','tag')
#设置可以在后台更改的字段,格式为列表或元组,其中的元组中的元组('title','category')可将title和category调整到同一行,如红色框所示
filter_horizontal = ('tag',)
# 模型中的manytomanyfield可以设置filter_horizontal,后台显示更友好,如蓝色框所示
网友评论