djangoadmin是什么?

2023-03-08 21:31:44 7 0
卡卡

导读:今天恰卡编程网来给各位分享关于djangoadmin是什么的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

如何正确使用 Django Admin

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

djangoadmin是什么?

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-admin.py的区别

django-admin是命令,可以直接在cmd中调用运行,django-admin.py是python模块,需要在python运行环境中运行

django中后台admin我是自己写的,现在要用用户认证这块了,感觉他自带的认证功能比较好,如何使用呢

不是使用自带admin的时候,有个配置文件捏,主要在那个文件里面改就好了,admin的实质其实就是一个工厂而已,配置了在系统第一次加载的时候就已经全部生成,默认路径是admin,既然你自己写了admin模块,你把你写的url路径换一个,那么在访问的时候,就两个都能访问了撒,比如你的admin最开始的基本路径叫admin1,就和默认admin分开了,想用那个服务,调用哪一个就好了

django的admin功能在实际开发中有用吗

1.DjangoAdmin不适合最终用户使用Djangoadmin是为管理员设计的,而不是给最终用户使用的.Djangoadmin的存在是为了方便管理员添加修改删除数据和管理站点任务.2.列表显示如上图,因为model的默认文本显示是xxxobject,所以在admin列表页中默认显示的也是xxxobject.如果希望显示更有用的信息我们可以进行如下设置:为model写__unicode__()方法如果希望model在列表页中显示项,则需要使用list_display__unicode()__例子:#models.pyfromdjango.dbimportmodelsclassArticle(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.pyfromdjango.contribimportadminfrom.modelsimportArticleadmin.site.register(Article)结果:如果希望显示其他项:#admin.pyfromdjango.contribimportadminfrom.modelsimportArticleclassArticleAdmin(admin.ModelAdmin):list_display=('title','is_published')admin.site.register(Article,ArticleAdmin)

结语:以上就是恰卡编程网为大家介绍的关于djangoadmin是什么的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。

收藏
分享
海报
0 条评论
7
上一篇:武汉python课程费用一般多少钱(2023年最新整理) 下一篇:c比python强多少(python和c差别大吗)

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码