文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Django中的Admin管理工具具体用法

2023-06-02 02:54

关注

这篇文章主要讲解了“Django中的Admin管理工具具体用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Django中的Admin管理工具具体用法”吧!

Django admin自动管理工具是 django.contrib 的一部分,我们可以在项目的 settings.py文件的 INSTALLED_APPS设置中看到它,可以将它看成django本身自带的一个app应用程序。

INSTALLED_APPS = (    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',)

django.contrib是一套庞大的功能集,它是Django基本代码的组成部分。

管理工具

在项目的urls.py文件中添加url(r'^admin/' ,admin.site.urls),一般在生成项目时会自动设置好,我们只需要去掉注释就行。

from django.conf.urls import urlfrom django.contrib import adminurlpatterns = [    url(r'^admin/', admin.site.urls),]

使用管理工具

启动开发服务器,然后在浏览器中访问 http://127.0.0.1:8000/admin/,得到登陆界面,如下图所示:

Django中的Admin管理工具具体用法

接着可以通过命令 python manage.py createsuperuser来创建超级用户。

>> python manage.py createsuperuserUsername (leave blank to use 'root'): 用户名Email address: 邮箱Password: 密码Password (again):  确认密码Superuser created successfully.

创建好超级用户之后我们可以在刚刚的那个登录界面输入用户名和密码,登录成功后的界面如下所示:

Django中的Admin管理工具具体用法

为了让 admin 界面管理某个数据模型,我们需要先注册该数据模型到 admin。比如我们之前在TestApp中已经创建了模型Test。修改TestApp/admin.py文件:

from django.contrib import adminfrom TestApp.models import Test# Register your models here.admin.site.register(Test)

在网页中刷新后即可看到TestApp数据表,如下图:

Django中的Admin管理工具具体用法

复杂的后台数据模型

我们的django页面管理功能非常强大,完全有能力处理更加复杂的数据模型。

首先我们可以在TestApp/models.py文件中增加两个表(数据模型):

from django.db import models# Create your models here.class Test(models.Model):    name = models.CharField(max_length=20)class Contact(models.Model):    name = models.CharField(max_length=200)    age = models.IntegerField(default=0)    email = models.EmailField()    def __unicode__(self):        return self.nameclass Tag(models.Model):    contact = models.ForeignKey(Contact, on_delete=models.CASCADE, )    name = models.CharField(max_length=50)    def __unicode__(self):        return self.name

上述两个表中,Tag以Contact为外部键。一个Contact可以对应多个Tag。

在TestApp/admin.py文件中注册多个模型并显示:

from django.contrib import adminfrom TestApp.models import Test,Contact,Tag# Register your models here.admin.site.register([Test, Contact,Tag])

刷新管理页面,显示结果如下所示:

Django中的Admin管理工具具体用法

在以上管理工具我们就能进行复杂模型操作。

自定义表单

我们可以自定义管理页面,来取代默认的页面。比如上面的 “add” 页面。我们想只显示 name 和 email 部分。修改 TestApp/admin.py:

from django.contrib import adminfrom TestApp.models import Test, Contact, Tag# Register your models here.class ContactAdmin(admin.ModelAdmin):    fields = ('name', 'email')admin.site.register(Contact, ContactAdmin)admin.site.register([Test, Tag])

以上代码定义了一个 ContactAdmin 类,用以说明管理页面的显示格式。其中fields 属性定义了要显示的字段。

由于该类对应的是 Contact 数据模型,我们在注册的时候,需要将它们一起注册。显示效果如下:

Django中的Admin管理工具具体用法

还可以将输入栏分块,每个栏也可以定义自己的格式。修改 TestApp/admin.py为:

from django.contrib import adminfrom TestApp.models import Test, Contact, Tag# Register your models here.class ContactAdmin(admin.ModelAdmin):    fieldsets = (        ['Main', {            'fields': ('name', 'email'),        }],        ['Advance', {            'classes': ('collapse',),  # CSS            'fields': ('age',),        }]    )admin.site.register(Contact, ContactAdmin)admin.site.register([Test, Tag])

上面的栏目分为了 Main 和 Advance 两部分。classes 说明它所在的部分的 CSS 格式。这里让 Advance 部分隐藏:

Django中的Admin管理工具具体用法

Advance 部分旁边有一个 Show 按钮,用于展开,展开后可点击 Hide 将其隐藏,如下图所示:

Django中的Admin管理工具具体用法

内联(Inline)显示

上面的 Contact 是 Tag 的外部键,所以有外部参考的关系。而在默认的页面显示中,将两者分离开来,无法体现出两者的从属关系。我们可以使用内联显示,让 Tag 附加在 Contact 的编辑页面上显示。

修改TestApp/admin.py:

from django.contrib import adminfrom TestApp.models import Test, Contact, Tag# Register your models here.class TagInline(admin.TabularInline):    model = Tagclass ContactAdmin(admin.ModelAdmin):    inlines = [TagInline]  # Inline    fieldsets = (        ['Main', {            'fields': ('name', 'email'),        }],        ['Advance', {            'classes': ('collapse',),            'fields': ('age',),        }]    )admin.site.register(Contact, ContactAdmin)admin.site.register([Test])

访问页面后的效果图如下所示:

Django中的Admin管理工具具体用法

列表页的显示

我们也可以自定义Contact 的列表页的显示,比如在列表中显示更多的栏目,只需要在 ContactAdmin 中增加 list_display 属性:

from django.contrib import adminfrom TestApp.models import Test, Contact, Tag# Register your models here.class TagInline(admin.TabularInline):    model = Tagclass ContactAdmin(admin.ModelAdmin):    list_display = ('name', 'age', 'email')  # list    inlines = [TagInline]  # Inline    fieldsets = (        ['Main', {            'fields': ('name', 'email'),        }],        ['Advance', {            'classes': ('collapse',),            'fields': ('age',),        }]    )admin.site.register(Contact, ContactAdmin)admin.site.register([Test])

刷新页面后效果如图所示:

Django中的Admin管理工具具体用法

搜索功能

搜索功能在管理大量记录时非常有,我们可以使用 search_fields 为该列表页增加搜索栏:

from django.contrib import adminfrom TestApp.models import Test, Contact, Tag# Register your models here.class TagInline(admin.TabularInline):    model = Tagclass ContactAdmin(admin.ModelAdmin):    list_display = ('name', 'age', 'email')  # list    search_fields = ('name',)    inlines = [TagInline]  # Inline    fieldsets = (        ['Main', {            'fields': ('name', 'email'),        }],        ['Advance', {            'classes': ('collapse',),            'fields': ('age',),        }]    )admin.site.register(Contact, ContactAdmin)admin.site.register([Test])

感谢各位的阅读,以上就是“Django中的Admin管理工具具体用法”的内容了,经过本文的学习后,相信大家对Django中的Admin管理工具具体用法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯