django admin系统

django自带了admin系统。可以对后台做管理。并且设置起来也很方便。

首先,运行:

python manage.py createsuperuser

它会引导你产生一个超级用户,该用户用于登录后台界面。

然后启动django

python manage.py runserver 0.0.0.0:8000

访问页面:http://127.0.0.1:8000/admin/

最后那个斜杠好像很重要。

顺便说一句,不要随便urls.py里的设置,特别是admin/后不要随手加个$,不要问我怎么知道的。

url(r'^admin/', admin.site.urls)

访问那个页面后,输入你刚刚设置好的用户名和密码就可以登录了。

然鹅,万一忘记密码怎么办:

python manage.py shell

from django.contrib.auth.models import User

user=User.objects.get(username='XXX')

user.set_password('new_password')

user.save()

或
python manage.py changepassword username

那么……继续。

进去后发现都是英文的,因为我们工作语言是中文,这就要改改了。在setting.py中:

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

再登录就是中文了。

利用admin管理my_app

默认情况下只有一个用户授权的栏目。管理自己应用权限的话首先要建立一个app

python manage.py startapp my_app

然后就会有一个my_app文件夹了,在这个文件夹里,会自动生成几个文件。不过需要自己手动在setting.py中INSTALLED_APPS自己加入my_app。这样,再次进入admin的时候,程序会先扫到INSTALLED_APPS中的my_app,然后去my_app中读取admin的相关设置。最后就会多出一栏,my_app。

my_app里应该是空的,再里面添加内容就需要编辑my_app/admin.py。

在admin.py中的设置,其实是覆写了django/contrib/admin中的相关内容。至于这个django是在哪里。反正从pycharm中是External Libraries中site-package(library root)下面。我猜是如果使用pip命令安装的django的话,那个自动安装的地址吧。

在后台django/contrib/admin/templates/admin中,有许多网页,这些就是默认的admin界面中使用的网页模板。在自己的project中同样新建文件夹admin以及相关的网页就会让系统重载该网页。这样你就可以利用admin的后台逻辑去展示一个你自己喜欢的管理界面了。这种覆写是全局性的覆写,你如果进去那个目录就会发现,只有几个网页,内容都是渲染上去的,所以如果想针对某一个进行覆写还是需要配合admin.py的。

目前还没找到连逻辑都覆写的方法,目前的蠢方法是:先跳转到自己的这个页面,在自己这个页面中重新发送一个ajax请求到后端。(是不是有点蠢)

在admin.py中,有很多骚操作的。(这里慢慢更,毕竟我也菜的一批)

首先:必备的类:

from django.contrib import admin

之后,每个你希望在后台展示的数据模型,都需要自己先import进来。

然后开始创建类,每个类必须继承admin.AdminSite:

现在后台显示的title是后台管理,很low,改成自己的就需要创建一个类

这个可以让应用有一个自己的名字。

class MyAdminSite(admin.AdminSite):
    site_header = "XXX后台"
    site_title = "XXXX后台管理"
admin.site=MyAdminSite()

如果不用类,这样也行。

admin.site.site_header = 'XXXXX'
admin.site.site_title = '12345'

但是应用里的其他表单是不可以不用类的。

先放个官方文档,实在不行就去里面看看:https://docs.djangoproject.com/en/1.11/

然后再说说我目前已经用到的功能。

灵魂功能:

admin.site.register(models, Yourclass)

第一个参数是models中的类(就是你的数据),意味着你需要在后台对这个类进行维护。

第二个参数是在admin.py中自己声明的一个类,在这个类里可以对你的数据展示做一个规范。里面涉及到各种属性的设置。

简单先写几个我用到的设置

list_per_page 每页显示几条

list_display=["column name","your colunm"]在显示页面中显示哪几列数据,你已经要展示一个model了;这个model 里哪几列要展示。以一个数组的形式写出来就行了,或者你想自定义一列,可以把该列的组织方式以函数的形式声明,并把该函数名声明在这里。

class UserFrom(admin.ModelAdmin):
    list_per_page = 10
    list_display = ["username",'recoder']
    def recoder(self,obj):
        #obj
        return format_html(<span>认证完成</span>)
    recoder.short_description = '自定义表头'

这里我可研究了好久。首先,你自己定义的函数中可以放一个参数,obj,这个玩意你可以想象成是这一行的数据,如果你的自定义列需要和前几行的某个数据相关,那么这个就超有用了。在你的一同操作后,只需要返回就可以让你想显示的内容出现在自定义列中了。不过如果你想让它返回一个带有HTML的话,需要使用函数format_html(),并把自己的内容放在其中,这样你的内容就可以被前端解析了、

最后就是你的函数名+.short_description= ,就可以自己命名表头了。

书接上表,如果想针对某一个类设计自己独特的页面就需要使用属性

change_form_template = 'admin/user_change_form.html'

其中路径是从项目的template文件夹开始往下算的。

我估计后面害的更

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值