导读:很多朋友问到关于django怎么管理admin用户的相关问题,本文恰卡编程网就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!
如何正确使用 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 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"用户了.
结语:以上就是恰卡编程网为大家整理的关于django怎么管理admin用户的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~