美文网首页
django后台设置

django后台设置

作者: 雷小厮 | 来源:发表于2017-08-29 09:52 被阅读0次

最近在更新之前用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.png

settings中这部分可以按需要修改,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,后台显示更友好,如蓝色框所示

相关文章

网友评论

      本文标题:django后台设置

      本文链接:https://www.haomeiwen.com/subject/azegdxtx.html