django怎么管理admin用户(2023年最新整理)

导读:很多朋友问到关于django怎么管理admin用户的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

如何正确使用 Django Admin

1. Django Admin 不适合最终用户使用

Django admin是为管理员设计的, 而不是给最终用户使用的. Django admin的存在是为了方便管理员添加修改删除数据和管理站点任务.

2. 列表显示

如上图, 因为model的默认文本显示是 xxx object, 所以在admin列表页中默认显示的也是xxx object. 如果希望显示更有用的信息 我们可以进行如下设置:

为model写__unicode__()方法

如果希望model在列表页中显示更多项, 则需要使用list_display

__unicode()__例子:

# models.py

from django.db import models

class Article(models.Model):

title = models.CharField(max_length=100)

slug = models.CharField(max_length=100)

content = models.TextField()

is_published = models.BooleanField(default=False)

def __unicode__(self):

return self.title

# admin.py

from django.contrib import admin

from .models import Article

admin.site.register(Article)

结果:

如果希望显示其他项:

# admin.py

from django.contrib import admin

from .models import Article

class ArticleAdmin(admin.ModelAdmin):

list_display = (\'title\', \'is_published\')

admin.site.register(Article, ArticleAdmin)

django怎么管理admin用户(2023年最新整理)  第1张

django sqlalchemy怎么用admin后台管理

1. Django Admin 不适合最终用户使用

Django admin是为管理员设计的, 而不是给最终用户使用的. Django admin的存在是为了方便管理员添加修改删除数据和管理站点任务.

2. 列表显示

如上图, 因为model的默认文本显示是 xxx object, 所以在admin列表页中默认显示的也是xxx object. 如果希望显示更有用的信息 我们可以进行如下设置:

为model写__unicode__()方法

如果希望model在列表页中显示更多项, 则需要使用list_display

__unicode()__例子:

# models.py

from django.db import models

class Article(models.Model):

title = models.CharField(max_length=100)

slug = models.CharField(max_length=100)

content = models.TextField()

is_published = models.BooleanField(default=False)

def __unicode__(self):

return self.title

# admin.py

from django.contrib import admin

from .models import Article

admin.site.register(Article)

结果:

如果希望显示其他项:

# admin.py

from django.contrib import admin

from .models import Article

class ArticleAdmin(admin.ModelAdmin):

list_display = (\'title\', \'is_published\')

admin.site.register(Article, ArticleAdmin)

结果:

3. 为ModelAdmin增加动作

我们可以为ModelAdmin增加method或function, 以此使admin界面更符合我们的需求.

例如, 我们希望在在admin界面中显示一个明确地URL, 但当我们在model中定义了get_absolute_url()方法后, django admin默认给我们的却是一个与我们想要的URL完全不同的URL. 于是我们可以通过以下方法定义该URL:

# admin.py

from django.contrib import admin

from django.core.urlresolvers import reverse

from django.utils.html import format_html

from .models import Article

class ArticleAdmin(admin.ModelAdmin):

list_display = (\'title\', \'is_published\',)

readonly_fields = (\'show_url\',)

def show_url(self, instance):

url = reverse(\'article_detail\', kwargs={\'pl\': instance.pk})

response = format_html(\"\"\"a href=\"{0}\"文章预览preview/a\"\"\", url)

return response

show_url.short_description = u\"文章预览\"

# 显示HTML tag

# 对于用户提交的数据, 永远不要这么设置!

show_url.allow_tags = True

注意, allow_tags属性, 其默认值是False, 如果错误使用将会带来安全隐患. 如果设置为True,

在admin中会允许显示HTML tag. 因此我们使用的原则是, 对于用户输入的信息, 永远不设置allow_tags=True.

只有当其内容是系统生成, 用户无法修改的时, 才能使用allow_tags=True.

4. 不在多用户编辑环境使用list_editable

django admin为我们提供了在列表页修改model属性的功能, 这样方便管理员一次修改多个属性. 如果管理员只有一个人的话,

那就没问题, 但在多用户环境中时, 却是会存在一个很严重的潜在问题. 因为在list页提交的修改信息, 记录的是位置, 而不是model的主键.

举个例子, 文章列表页默认按照创建顺序逆序排列, 用户A打开文章列表页, 并开始修改, 同时用户B增加了一篇新文章, 此时,

当用户A提交修改后其后的文章信息都会出错.

如何控制访问django/admin页面的权限

Django的用户权限管理也是业界比较通用的RBAC(Role-Based Access Control)的权限控制模型。其实很简单:看一个用户是否有权限访问某页面(view),就看这个用户是否拥有访问这个页面所必需的角色(Role)。而一个用户的所拥有的所有的角色有两个途径获得,1、是直接赋给这个用户的角色,2、是这个用户所属的所有小组所拥有的角色,这个用户间接地就拥有了这些权限角色。

django admin实现后台多用户隔离

很多人说django自带的后台只能用来做管理,其实简单的多用户发布需求还是可以用自带的admin模块来做的。核心是使用 request.user 获取当前登录用户,然后根据用户筛选后台显示内容。

复杂的用户权限管理使用django-guardian等组件

模拟了一个根据用户每天输入的数据,生成可视化报表的项目。预想的是根据不同的报表类型,预设不同的数据模板。前端请求的时候发送报表类型和数据范围用户等信息到后端。后端返回数据后交给前端echart处理。

花了整个下午才完成基本的后台,因为目的是实现多用户,后面的部分有空再去写。

![HTZMQ)4(7BXHAD`K~F]QSLR.png]( )

创建和修改model时,会显示关联的外键的所有的值,比如显示出所有的用户来了。使用 get_form 方法隐藏外键字段(例如user), save_model 设置user默认值,也别忘了列表页的筛选 get_queryset

Django 1.74 版本取消 syncdb 后,请问怎么创建 admin 账号

1 利用\"Administrator\"

我们知道在安装WIN XP过程中,首先是以\"Administrator\"默认登陆,然后会要求创建一个新帐户,以便进入WIN XP时使用此新建帐号,而且在WIN XP的登陆界面中也只会出现创建的这个用户帐户,不会出现 \"Administrator\",但实际上该\"Administrator\"帐号还是存在的,并且密码为空.

当我们了解了这一点以后,假如忘记了登陆密码的话,在登陆界面上,按住Ctrl+Alt键,再按住Del键两次,即可出现经典的登陆画面,此时在用户名处键入\"Administrator\",密码为空进入,然后再修改\"ZHANGBQ\"的密码即可.

2 利用NET命令

我们知道在WIN XP中提供了\"net user\"命令,该命令可以添加,修改用户帐户信息,其语法格式为:

net user[UserName[Password|*][options]][/domain]

net user[UserName{Password|*}/add[options][/domain]

net user[UserName[/delete][/domain]]

每个参数的具体含义在WIN XP帮助中已做了详细的说明,在此笔者就不多阐述了.好了,我们现在以恢复本地用户\"zhangbq\"口令为例,来说明解决忘记登陆密码的步骤:

1 重新启动计算机,在启动画面出现后马上按下F8键,选择\"带命令行的安全模式\".

2 运行过程结束时,系统列出了系统超级用户\"Administrator\"和本地用户\"ZHANGBQ\"的选择菜单,鼠标单击\"Administrator\",进入命令行模式.

3 键入命令:\"net user zhangbq 123456/add\",强制将\"zhangbq\"用户的口令更改为\"123456\".若想在此添加一个新用户(如:用户名为\"abcdef\",口令为\"123456\")的话,请键入\"net user abcdef 123456/add\",添加后可用 \"net localgroup administrators abcdef/add\"命令将用户提升为系统管理组\"Administrator\"的用户,并使其具有超级权限.

4 重新启动计算机,选择正常模式下运行,就可以用更改后的口令\"123456\"登陆\"ZHANGBQ\"用户了.

结语:以上就是首席CTO笔记为大家整理的关于django怎么管理admin用户的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~

以上内容为新媒号(sinv.com.cn)为大家提供!新媒号,坚持更新大家所需的互联网后端知识。希望您喜欢!

版权申明:新媒号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 k2#88.com(替换@) 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023-09-23
下一篇 2023-09-23

相关推荐

发表回复

登录后才能评论