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这个参数名称。

  • 相关阅读:
    检查点(Checkpoint)过程如何处理未提交的事务
    SQL Server代理(4/12):配置数据库邮件
    SQL Server代理(3/12):代理警报和操作员
    hash_multimap
    hash_map
    hash_multiset
    hash_set
    hash 函数
    pair
    multimap
  • 原文地址:https://www.cnblogs.com/abeen/p/1824647.html
Copyright © 2011-2022 走看看