django Admin

admin是django强大功能之一,它能共从数据库中读取数据,呈现在页面中,进行管理。可以理解为数据库的web版

 

正常情况下创建超级用户,默认以name为用户名登陆

python manage.py createsuperuser

 

默认为英文界面,如果想用中文

#settings.py 设置

LANGUAGE_CODE = 'en-us'  #LANGUAGE_CODE = 'zh-hans'

 

将models里的模型注册到admin后台里

在admin.py里注册

①、使用register的方法
admin.site.register(Book,MyAdmin)

②、使用register的装饰器
@admin.register(Book)

 

示例一(search_fields,list_display)

#admin.py
from django.contrib import admin from web import models class HostAdmin(admin.ModelAdmin): search_fields = ('hostname','ip_addr')                #search_fields表示搜索的时候的搜索依据如下图所示 list_display = ('hostname','ip_addr','port','system_type','enabled')      #list_display表示在菜单里列出的字段 admin.site.register(models.Hosts,HostAdmin)    #这里的HostAdmin为上面定义的HostAdmin类 admin.site.register(models.IDC) admin.site.register(models.Department) admin.site.register(models.Session)

 

 

示例二(__str__)

#models.py

class IDC(models.Model):
    name = models.CharField(max_length=64, unique=True)

    #def __str__(self):                  #这里定义了idc字段在web界面里返回的是一个值,而不是一个对象,如下图所示
        #return self.name

    class Meta:
        verbose_name = 'IDC'
        verbose_name_plural = 'IDC'    

 

 

 示例三 list_filter

#models.py
class Hosts(models.Model): hostname = models.CharField(max_length=64, unique=True) ip_addr = models.GenericIPAddressField(unique=True) system_type_choices = ( ('windows', 'Windows'), ('linux', 'Linux/Unix') ) idc = models.ForeignKey('IDC') system_type = models.CharField(choices=system_type_choices, max_length=32, default='linux') port = models.IntegerField(default=22) enabled = models.BooleanField(default=True, help_text='主机若不想被用户访问可以去掉此选项') # host_users = models.ForeignKey('HostUsers') # host_groups = models.ForeignKey('HostGroups') memo = models.CharField(max_length=128, blank=True, null=True) created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return '%s(%s)' % (self.hostname, self.ip_addr) class Meta: verbose_name = '主机' verbose_name_plural = '主机'
#admin.py from django.contrib import admin from web import models
class HostAdmin(admin.ModelAdmin): search_fields = ('hostname','ip_addr') list_display = ('hostname','ip_addr','port','system_type','enabled') list_filter = ("ip_addr",)          #表示作为过滤条件的字段,这里写上字段后,默认会以字段的内容结果作为过滤条件,如下图

 

 在看一个示例

#models.py

class AuditLog(models.Model):
    session = models.ForeignKey(SessionTrack)
    user = models.ForeignKey('UserProfile')
    host = models.ForeignKey('BindHosts')
    action_choices = (
        (0, 'CMD'),
        (1, 'Login'),
        (2, 'Logout'),
        (3, 'GetFile'),
        (4, 'SendFile'),
        (5, 'exception'),
    )
    action_type = models.IntegerField(choices=action_choices, default=0)
    cmd = models.TextField(blank=True, null=True)
    memo = models.CharField(max_length=128, blank=True, null=True)
    date = models.DateTimeField()

    def __str__(self):
        return '%s-->%s@%s:%s' % (self.user.email, self.host.host_user.username, self.host.host.ip_addr, self.cmd)

    class Meta:
        verbose_name = '审计日志'
        verbose_name_plural = '审计日志'

# admin.py class AuditLogAdmin(admin.ModelAdmin): list_display = ('id','session','user','host','action_type','cmd','date') list_filter = ('session','user','host','action_type','date') search_fields = ['user__user__username','host__host__hostname','host__host__ip_addr','cmd']    #看下图 actions = ['make_published']
   ordering = ("-id",)          #表示将数据根据id排序 list_per_page
=20 choice_fields = ('action_type',) fk_fields = ('user','host') colored_fields = { 'action_type':{'Login':'#83e277','Logout':'orange'} } def get_actions(self, request): actions = super(AuditLogAdmin, self).get_actions(request) if 'delete_selected' in actions: del actions['delete_selected'] return actions def make_published(self, request, queryset): rows_deleted = models.AuditLog.objects.all() #if rows_updated == 1: message_bit = "1 story was" #else: # message_bit = "%s stories were" % rows_updated self.message_user(request, "%s successfully marked as published." % message_bit) make_published.short_description = '删除3个月以前的审计日志' # def suit_row_attributes(self, obj, request): css_class = { 1: 'success', 2: 'warning', 5: 'error', }.get(obj.action_type) if css_class: return {'class': css_class, 'data': obj.action_type} def has_add_permission(self, request, obj=None): return False def has_delete_permission(self, request, obj=None): return False

 

posted @ 2018-06-12 21:21  FRESHMANS  阅读(238)  评论(0)    收藏  举报