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_superuseris_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模块;

自动根据modelfield类型设置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页上labelform 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的示例分析

相关内容

热门资讯

美前副总统:共和党失去了方向,... 2026年是美国的中期选举年,共和党选情不利,可能在年底的选举中遭遇挫败。美国前副总统彭斯5月31日...
南枝原来去过中国?《给阿嬷的情... 《给阿嬷的情书》票房口碑双丰收,目前票房已突破13亿。凤凰卫视最新一期《问答神州》专访了该片导演蓝鸿...
法国海军扣押一艘俄“影子舰队”... 近日,法国海军在大西洋海域扣押了一艘据称从俄罗斯摩尔曼斯克出发的油轮,引发俄方强烈不满。俄新社6月1...
凤凰晚报丨面粉染头模仿黄仁勋,... 今日人物【面粉染头模仿黄仁勋,农村青年走红后称遭“法务”警告】“先赔偿5000元肖像侵权使用费,再删...
亲特朗普极右派候选人领跑哥伦比... 【文/观察者网 熊超然】当地时间5月31日,哥伦比亚总统选举拉开帷幕,首轮投票计票工作已完成逾99%...
2026年度网络举报系列宣传活... 5月28日至29日,以“每一件举报,都是共治的力量——豫你e行 同心护网”为主题的2026年度网络举...
中原首例帝企鹅DNA性别鉴定!... 近日,郑州海昌海洋公园正式对外公布中原首对人工繁育的帝企鹅萌宝的DNA性别鉴定报告。这是中原首个将 ...
我国科学家为细胞信号“导航”开... 新华社济南5月31日电(记者张力元)人体细胞犹如一座精密的通信城市,每天都有大量“指令”穿梭传递,调...
极端大风突袭哈尔滨!过山车停摆... 极目新闻记者 詹钘5月31日,受强对流天气影响,哈尔滨国际会展中心体育场相关设施受到损坏,原计划当晚...
三原电缆取得电缆接头连接用防护... 国家知识产权局信息显示,上海三原电缆附件有限公司取得一项名为“一种电缆接头连接用防护结构”的专利,授...