2024-10-03 03:03:16
本篇文章首席CTO笔记来给大家介绍有关如何查看djangoadmin界面以及djangoxadmin自定义页面的相关内容,希望对大家有所帮助,一起来看看吧。
操作方法:首先要运行pythonmanage.pycreatesuperuser命令来创建一个管理员账户。
然后在url中输入/admin即可到达管理员登录页,登录之后会发现并没有数据库中要显示的项目,因为我们还没有注册。
接下来我们注册要在admin中管理的数据模型;在admin.py中注册模型。然后刷新页面,即可看到ContactMessage这个数据表了,可以在里边增删进行简单的增删改查。
如何正确使用DjangoAdmin
1.DjangoAdmin不适合最终用户使用
Djangoadmin是为管理员设计的,而不是给最终用户使用的.Djangoadmin的存在是为了方便管理员添加修改删除数据和管理站点任务.
2.列表显示
如上图,因为model的默认文本显示是xxxobject,所以在admin列表页中默认显示的也是xxxobject.如果希望显示更有用的信息我们可以进行如下设置:
为model写__unicode__()方法
如果希望model在列表页中显示更多项,则需要使用list_display
__unicode()__例子:
#models.py
fromdjango.dbimportmodels
classArticle(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):
returnself.title
#admin.py
fromdjango.contribimportadmin
from.modelsimportArticle
admin.site.register(Article)
结果:
如果希望显示其他项:
#admin.py
fromdjango.contribimportadmin
from.modelsimportArticle
classArticleAdmin(admin.ModelAdmin):
list_display=('title','is_published')
admin.site.register(Article,ArticleAdmin)
结果:
3.为ModelAdmin增加动作
我们可以为ModelAdmin增加method或function,以此使admin界面更符合我们的需求.
例如,我们希望在在admin界面中显示一个明确地URL,但当我们在model中定义了get_absolute_url()方法后,djangoadmin默认给我们的却是一个与我们想要的URL完全不同的URL.于是我们可以通过以下方法定义该URL:
#admin.py
fromdjango.contribimportadmin
fromdjango.core.urlresolversimportreverse
fromdjango.utils.htmlimportformat_html
from.modelsimportArticle
classArticleAdmin(admin.ModelAdmin):
list_display=('title','is_published',)
readonly_fields=('show_url',)
defshow_url(self,instance):
url=reverse('article_detail',kwargs={'pl':instance.pk})
response=format_html("""ahref="{0}"文章预览preview/a""",url)
returnresponse
show_url.short_description=u"文章预览"
#显示HTMLtag
#对于用户提交的数据,永远不要这么设置!
show_url.allow_tags=True
注意,allow_tags属性,其默认值是False,如果错误使用将会带来安全隐患.如果设置为True,
在admin中会允许显示HTMLtag.因此我们使用的原则是,对于用户输入的信息,永远不设置allow_tags=True.
只有当其内容是系统生成,用户无法修改的时,才能使用allow_tags=True.
4.不在多用户编辑环境使用list_editable
djangoadmin为我们提供了在列表页修改model属性的功能,这样方便管理员一次修改多个属性.如果管理员只有一个人的话,
那就没问题,但在多用户环境中时,却是会存在一个很严重的潜在问题.因为在list页提交的修改信息,记录的是位置,而不是model的主键.
举个例子,文章列表页默认按照创建顺序逆序排列,用户A打开文章列表页,并开始修改,同时用户B增加了一篇新文章,此时,
当用户A提交修改后其后的文章信息都会出错.
如何控制访问django/admin页面的权限Django的用户权限管理也是业界比较通用的RBAC(Role-BasedAccessControl)的权限控制模型。其实很简单:看一个用户是否有权限访问某页面(view),就看这个用户是否拥有访问这个页面所必需的角色(Role)。而一个用户的所拥有的所有的角色有两个途径获得,1、是直接赋给这个用户的角色,2、是这个用户所属的所有小组所拥有的角色,这个用户间接地就拥有了这些权限角色。
django的admin界面怎么没有样式应该是静态文件没部署好,你可以看一下log,或者通过firebug查看一下浏览器的请求,是不是报404了。
Djangoadmin管理界面在你的app里面的views.py方法里面,每个需要验证的user的地方加一个if语句,ifuser
结语:以上就是首席CTO笔记为大家介绍的关于如何查看djangoadmin界面和djangoxadmin自定义页面的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。