100django_admin
admin
2023-07-08 12:04:04
0次

 

 

admin

 

requirement:

django强大的功能之一,提供了admin后台管理界面,简单配置就可对数据库内容作管理;

 

mysite/mysite/settings.py

INSTALLED_APPS = [

    # 'users.apps.UsersConfig',

    'blog.apps.BlogConfig',

    'publish.apps.PublishConfig',

    'bootstrap3',

    'books.apps.BooksConfig',

    'polls.apps.PollsConfig',

    'django.contrib.admin',

    'django.contrib.auth',   #依赖1

    'django.contrib.contenttypes',   #依赖2

    'django.contrib.sessions',   #依赖3

    'django.contrib.messages',   #依赖4

    'django.contrib.staticfiles',

]

TEMPLATES = [

    {

        'BACKEND': 'django.template.backends.django.DjangoTemplates',

        # 'BACKEND': 'django.template.backends.jinja2.Jinja2',

        'DIRS': [os.path.join(BASE_DIR, 'templates')],

        'APP_DIRS': True,

        'OPTIONS': {

            'context_processors': [

                'django.template.context_processors.debug',

                'django.template.context_processors.request',

                'django.contrib.auth.context_processors.auth',

                'django.contrib.messages.context_processors.messages',

            ],

        },

    },

]

MIDDLEWARE = [

    'django.middleware.security.SecurityMiddleware',

    'django.contrib.sessions.middleware.SessionMiddleware',

    'django.middleware.common.CommonMiddleware',

    'django.middleware.csrf.CsrfViewMiddleware',

    'django.contrib.auth.middleware.AuthenticationMiddleware',

    'django.contrib.messages.middleware.MessageMiddleware',

    'django.middleware.clickjacking.XFrameOptionsMiddleware',

]

 

 

mysite/mysite/urls.py

urlpatterns = [

    # url(r'^$', index),

    # url(r'^hello/$', hello),

    # url(r'^polls/', include('polls.urls')),

    # url(r'^polls/', include('polls.urls', app_name='polls')),

    # url(r'^polls/', include('polls.urls', namespace='polls')),

    # url(r'^books/', include('books.urls')),

    # url(r'^sendmail/', include('sendmail.urls')),

    # url(r'publish/', include('publish.urls')),

    url(r'blog/', include('blog.urls')),

    url(r'^admin/', admin.site.urls),

]

 

以上是前4步;

5、${app_dir}/admin.py,给每个模型创建一个ModelAdmin类,封装模型自定义的Admin功能和选项;

6、注册ModelAdmin;

到此,可通过绑定的url来访问管理站点,默认是/admin/;

 

注:

默认,is_superuser和is_staff双重身份才能在admin中进行管理和修改;

当只有is_staff,能进入后台但不能进行任何操作;

当只有is_superuser,不能进入admin;

>>> from django.contrib.auth.models import User

>>> User.objects.all()

>>> u = User.objects.create_user(username='jowin',email='jowin@ane56.com')

>>> u.set_password('jowin')

>>> u.save()

>>> u

>>> u.is_superuser

False

>>> u.is_superuser=True

>>> u.is_staff

False

>>> u.is_staff=True

>>> u.save()

>>> u.is_active

True

>>> quit()

 

 

配置ModelAdmin:

 

django默认会到${app_name}下找admin.py模块;

自动根据model的field类型设置form类型;

 

label名称,定义model field时指定verbose_name;

exclude,排除某字段,不展示;

fields,显示某字段;

date_hierarchy,添加日期标签过滤;

ordering,排序;

search_fields,搜索某列;

list_display,列表显示更多列;

list_filter;

100django_admin

 

mysite/blog/admin.py

from django.contrib import admin

from .models import Blog, Author, Entry

 

# admin.site.register(Blog)   #方式1

# admin.site.register(Author)

# admin.site.register(Entry)

 

@admin.register(Blog)   #方式2

class BlogAdmin(admin.ModelAdmin):

    pass

 

@admin.register(Entry)

class EntryAdmin(admin.ModelAdmin):

    pass

 

@admin.register(Author)

class AuthorAdmin(admin.ModelAdmin):

    pass

100django_admin

 

 

def authors_display(obj):

    return ', '.join([ author.name for author in obj.authors.all()])

 

authors_display.short_description = 'Authors'

 

def make_pub_date_to_now(modeladmin, request, queryset):

    queryset.update(pub_date=timezone.now())

 

make_pub_date_to_now.short_description = '批量修改发布日期为今天'

 

@admin.register(Entry)

class EntryAdmin(admin.ModelAdmin):

    exclude = ('n_comments', 'n_pingbacks')

    date_hierarchy = 'pub_date'

    search_fields = ('headline', 'body_text')

    list_display = ('headline', 'blog', 'pub_date', authors_display)

    actions = [make_pub_date_to_now]

100django_admin

注:

web页上label(form label),对应models.py中的verbose_name;

 

100django_admin

100django_admin

注:

与代码中authors_display.short_description = 'Authors'对应;

 

100django_admin

注:

Actions与代码中actions = [make_pub_date_to_now]对应;

 

 

 


上一篇:102django_cbv

下一篇:django_auth的示例分析

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...