zoukankan      html  css  js  c++  java
  • [Dynamic Language] Python Django: 站点管理Admin

    Django站点管理
        管理工具其实就是一个Django应用程序,包含自己的模块、模板、视图和 URLpatterns。 我们要像添加自己的视图一样,把它添加到URLconf里面。
    我们可以在Django基本代码中的django/contrib/admin  目录下,检查它的模板、视图和URLpatterns。
        当服务启动时,Django从url.py引导URLconf,然后执行admin.autodiscover()语句。这个函数遍历INSTALLED_APPS配置,寻找相关的admin.py文件,如果找到它就执行其中的代码。
    每次调用admin.site.register()都将那个模块注册到管理工中,管理工具只为明确注册了的模块显示一个编辑/修改界面。
      既然管理工具也是Django应用程序,当然diango.contrib.auth也包含自身的admin.py,所以Users和Groups能在管理工具中自动显示。
      Django的管理工具默认没有激活,我们来试一下激化管理工具并做相关操作设置。
    激活管理界面
    第一步,对你的settings文件做如下这些改变:
       1.
          将'django.contrib.admin'加入setting的INSTALLED_APPS配置中 (INSTALLED_APPS中的配置顺序是没有关系的, 但是我们喜欢保持一定顺序以方便人来阅读)
       2.
          保证INSTALLED_APPS中包含'django.contrib.auth','django.contrib.contenttypes'和'django.contrib.sessions',Django 的管理工具需要这3个包。
          (如果你跟随本文制作mysite项目的话,那么请注意我们在第五章的时候把这三项INSTALLED_APPS条目注释了。现在,请把注释取消。)
       3.
          确保MIDDLEWARE_CLASSES 包含'django.middleware.common.CommonMiddleware' 、'django.contrib.sessions.middleware.SessionMiddleware'
          和'django.contrib.auth.middleware.AuthenticationMiddleware' 。(再次提醒,如果有跟着做mysite的话,请把在第五章做的注释取消。)
         
    第二步运行 python manage.py syncdb生成管理界面使用的额外数据库表
        当把'django.contrib.auth'加进INSTALLED_APPS后,第一次运行syncdb命令时, 系统会请你创建一个超级用户.还可以运行python manage.py createsuperuser来另外来
    创建一个admin的用户帐号。

    第三步 将admin访问配置在URLconf
        默认情况下,命令django-admin.py startproject生成的文件urls.py是将Django admin的路径注释掉的,你所要做的就是取消注释。
        注意,以下内容是必须确保存在的:

    1 # Include these import statements...
    2   from django.contrib import admin
    3 admin.autodiscover() //注意:Django 用admin.autodiscover()
                       来自动载入INSTALLED_APPS admin.py 模块,
                       如果注释此模板管理员将无管理权限
    4
    5 # And include this URLpattern...
    6   urlpatterns = patterns('',
    7 # ...
    8   (r'^admin/', include(admin.site.urls)),
    9 # ...
    10   )

    设置完成后,启动开发服务器访问http://127.0.0.1:8000/admin/

    将自己的Models加入到Admin管理中

    在自己的APP目录下建立admin.py文件,如在Books目录下建立admin.py文件并输入以下代码,这些代码通知管理工具为这些模块逐一提供界面。

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

    完成设置后,重新启动runserver,在http://127.0.0.1:8000/admin/在看到刚生成的模块。

    设置字段可选
    在我们自定义的模块中,所有的字段都是默认是必填项(blank=False)不能输入空值。但我们的模块中肯定有让用户可选择填写的字段,我们改怎么办吗?
    其实很简单,修改model字段将blank设置成True即可。

    1 class Publisher(models.Model):
    2 name = models.CharField(max_length=30)
    3 address = models.CharField(max_length=50)
    4 city = models.CharField(max_length=60)
    5 state_province = models.CharField(max_length=30)
    6 country = models.CharField(max_length=50)
    7 website = models.URLField(blank = True) //将URLField设置成可选字段

    设置日期型和数字型字段可选   

    1 publication_date = models.DateField(blank = True,null = True)//将日期型字段设置成可选字段

    自定义字段标签
    在编辑页面中,每个字段的标签都是从模块的字段名称生成的。 规则很简单: 用空格替换下划线;首字母大写。
    我们只需要在模块中指定verbose_name就可以定义自己的标签,然后重启服务即可。
    Django会自动适时将首字母大写,并且在其它不需要大写的地方使用verbose_name的精确

    publication_date = models.DateField(blank = True,null = True,verbose_name =
    "
    Pulish_On")
     为了使语法简洁,可以把它当作固定位置的参数传递。 下面与上面那个的效果相同。
    1 20 publication_date = models.DateField("Pulish_On", blank = True,null = True)
    2 21 last_name = models.CharField("xiao ming", max_length=40)
    3 22 email = models.EmailField("e-mail")
    但这不适用于ManyToManyField 和ForeignKey字段,因为它们第一个参数必须是模块类。 那种情形,必须显式使用verbose_name这个参数名称。

  • 相关阅读:
    67. Add Binary
    66. Plus One
    64. Minimum Path Sum
    63. Unique Paths II
    How to skip all the wizard pages and go directly to the installation process?
    Inno Setup打包之先卸载再安装
    How to change the header background color of a QTableView
    Openstack object list 一次最多有一万个 object
    Openstack 的 Log 在 /var/log/syslog 里 【Ubuntu】
    Git 分支
  • 原文地址:https://www.cnblogs.com/abeen/p/1824647.html
Copyright © 2011-2022 走看看