zoukankan      html  css  js  c++  java
  • Django笔记 —— Admin(Django站点管理界面)

      最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过。Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧~

      本篇笔记(其实我的所有笔记都是),并不会过于详细的讲解。因此如果有大家看不明白的地方,欢迎在我正版博客下留言,有时间的时候我很愿意来这里与大家探讨问题。(当然,不能是简简单单就可以百度到的问题-.-)

      我所选用的教材是《The Django Book 2.0》,本节是Admin部分,对应书中第六章。

    ------------------------------------------------------------------------------------------------------------------------------------------------

    1、历史&管理界面(Admin)的用处

      这里给大家讲讲书中提到的一个Django的小故事,以此来让大家了解管理界面的作用——

          在Django最开始开发的新闻报道的行业应用中,有一个典型的在线自来水的水质专题报道应用,它的实现流程是这样的:

        · 负责这个报道的记者和要处理数据的开发者碰头,提供一些数据给开发者。

        · 开发者围绕这些数据设计模型然后配置一个管理界面给记者。

        · 记者检查管理界面,尽早指出缺少或多余的字段。开发者来回地修改模块。

        · 当模块认可后,记者就开始用管理界面输入数据。同时,程序员可以专注于开发公众访问视图和模板(有趣的部分)。

      由此我们可以看到管理界面的第一个作用:供外行操作网站数据库。(你当然不能指望那些记者会使用MySQL或者Django去操作数据库-.-)

      除了数据操作外,还有很多针对开发者的作用,例如:

      · 检查模块:你定义好一些模块之后,在Admin中操作一下,可以查错。

      · 管理外部数据:如果你搞到很多外部数据(用户输入、网络爬虫……),那么在Admin中检查和编辑这些数据,虽然功能并不是很强大,却是比较便捷的。

      · 临时的数据管理程序:你可以开发个小站点自己用,通过Admin操作数据~

    2、用户权限系统&管理界面(Admin)的定位

      Admin有一套用户权限系统:

        1. 每个用户都有用户名、密码、邮箱地址、真实姓名,以及使用Admin的权限定义。

        2. 权限定义如下表

      名称 解释 备注
    一组三个布尔(bool)标记 活动标志

    标记用户是否激活

    激活了才能登录

     
    成员标志

    标记用户是否可以登录Admin

    用来区分公众用户和管理用户

    用户系统是独立于Admin的

    它不仅可应用于管理页面

    也可以用于控制公众页面

    因此要对两种用户作以区分

    超级用户标志

    有Admin中的一切权限

    如果有了这个,

    别的权限取值将全被忽略

    针对每个模型的权限 创建许可 有了哪种许可,就可以做哪种操作  
    编辑许可  
    删除许可  
    编辑用户和权限 编辑用户的权限 可以编辑用户的权限(包括自己) 就相当于把他设为超级用户-.-

        3. 可以创建用户组,为组设定权限,从而组中所有用户都有同样的权限

      在使用Admin时,一定要注意以下问题:

        · 别把它做成公众数据访问接口

        · 别让它有对数据进行复杂的排序和查询的功能

        · 只能提供给可信任的管理员

    3、django.contrib包 & 管理界面(Admin)

      请大家打开你的django源代码,从中你会看到contrib文件夹,这个就是django.contrib包。

      记得曾经见过一些前辈,学东西喜欢直接看源代码,看不懂再看文档。虽然我并不赞同(觉得这样效率低),但这的确可以说明,源代码几乎包含了所有你应当掌握的东西。

      话扯远了,咱们说回来,这个django.contrib包里面有很多Django自带的附加组件。

      本篇所讲的Admin就是这其中的管理界面(django.contrib.admin),而这里面还有很多功能,例如:

        · 用户鉴别系统(django.contrib.auth)

        · 支持匿名会话(django.contrib.sessions)

        · 用户评注系统(django.contrib.comments)

        · ……

      这些我们将在第十六章详细讨论。

    4、激活管理界面(Admin)

      在Django中默认已经设置好了所有管理界面的内容,因此你只要:

        1. 直接运行:python manage.py syncdb,过程中按照指示创建一个超级用户

        1+. 如果上面过程中选择了no,没创建超级用户,那么你也可以单独运行:python manage.py createsuperuser,来创建一个超级用户

        2. 运行服务器:python manage.py runserver

        3. 打开管理界面:http://127.0.0.1:8000/admin/,用你刚才设置的超级用户登录

      这样你便可以看到管理界面了。

      注:如果你想了解使用管理界面具体需要哪些设置(就是Django默认设置好的那部分),请去《The Django Book 2.0》中看吧。

    5、语言支持

      Django的管理界面支持很多语言,让其用你的语言显示的方法如下:

        1. 打开settings.py,找到MIDDLEWARE_CLASSES设置,在'django.contrib.sessions.middleware.SessionMiddleware'后面添加一项'django.middleware.locale.LocaleMiddleware'

        2. 刷新管理界面

      此时,如果你的语言可用,那么页面中很多内容都会被翻译好。

    6、关于之前admin.py疑问的解答

      在模型一讲中,我有一个疑问,admin.py到底是干什么的?

      现在可以回答了,这是用来把咱们自己定义的模型加入admin界面的注册表。

      以那一讲中的模型(Publisher、Author、Book)为例,只要在"./books/admin.py"文件中写入:

    1 from django.contrib import admin
    2 from five.books.models import Publisher, Author, Book
    3 
    4 admin.site.register(Publisher)
    5 admin.site.register(Author)
    6 admin.site.register(Book)

      如此一来,再打开admin界面,便会看到这几个模型并可以随意操作了。

    7、提速声明

      关于admin界面更多的内容,例如其幕后如何工作、各种方便的用法,书中有,这里不再赘述。

      Django笔记,算上这篇才第六篇,但时间却已经过了一个学期。这是我第一次写这种长篇的笔记,我现在深深感到自己的懒惰、眼高手低,以及不知取舍。这种速度,无法接受。

      因此,我后面的内容将真正写成“笔记”,而不是“教程”。笔记,应当是自己忘记了看看,可以回忆起来;而教程,则是应该把完全不会的人讲会。我没必要写一份教程,写笔记就可以了。

      但毕竟是博客,我也希望大家来看,对大家有帮助。因此,在这里声明一下具体省略的内容:

        1. 暂时用不到的内容(我是在学Django,还没开始使用。因此,学过多过全没有意义,应当先掌握基本,在实践中不断完善。)

        2. 书中详细阐述的内容(这部分,实在没必要重写。要么就是写个简短的总结,要么就是干脆省略。)

        3. 版本不符的内容(本书对应Django版本已经不是最新的了,因此这里只写我现在使用的较新版本的内容,老版本内容自行查书即可。)

        4. 其余没必要的内容(文中一般都会声明省略了哪些内容,供读者参考。)

    ------------------------------------------------------------------------------------------------------------------------------------------------

      至此,“Admin(Django站点管理界面)”一章笔记完成,下一章是交互性网站的支柱——“表单”。

  • 相关阅读:
    mysql基础
    EM算法总结
    机器学习之PCA(1)
    C语言socket编程<二>
    计算机网络·实验一:
    机器学习之GMM-EM
    C语言socket编程<一>socket之Winsock API
    【翻译】java-TCP-socket网络编程2
    【翻译】java-TCP-socket网络编程1
    【翻译】Java IO 关系总览和整理
  • 原文地址:https://www.cnblogs.com/icedream61/p/4562591.html
Copyright © 2011-2022 走看看