博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第六章:站点后台管理篇
阅读量:7195 次
发布时间:2019-06-29

本文共 5083 字,大约阅读时间需要 16 分钟。

1、描述:

   后台管理见面共是站点非常重要的一部分,后台管理是可以控制用户权限,指定一部分具有权限的用户才可以管理维护。

   比如:我们自己的写的博客,只有我们自己登录了才能写自己的博客,当博客写好后发布,其他用户就可以浏览我们的博客,但是不能修改其博客的内容,只能修改自己发布的博客内容。

   但是管理界面有一问题:创建它太繁琐。当你开发对公众的功能时,网页开发是有趣的,但是创建管理界面通常是千篇一律的。你必须认证用户,显示并管理表格,验证输入的有效性诸如此类。这很繁琐而且是重复劳动。

    Django 就改进繁琐和重复缺陷,从可以实现自动管理界面,只要做简单的配置和定制就可以实现,后台管理的功能。

 

激活管理界面

1、配置Models

   在需要设置为被管理这编辑的model 类中设置为Admin类的模式,如果:

class Author(models.Model):     salutation=models.CharField(max_length=10)     first_name=models.CharField(max_length=30)     last_name=models.CharField(max_length=40)     email=models.EmailField(max_length=30) #headshot = models.ImageField(upload_to='/tmp')     def __unicode__(self): return '%s %s' % (self.first_name, self.last_name) #Admin 声明标志了该类是管理界面'''     class Admin: pass

Admin 之下你可以放很多选项,但目前我们只关注缺省的东西,所以我们只在那写上 pass 让 Python 知道 Admin 类是空的。

下面我提供Books所以模型类(models.py)完整定制的代码:

1 # -*- coding:utf-8 -*-  2 from django.db import models  3 from django.contrib import admin  4  5 class Publisher(models.Model):  6     name = models.CharField(max_length=30,blank=True)  7     address = models.CharField(max_length=50)  8     city = models.CharField(max_length=60)  9     state_province= models.CharField(max_length=30) 10     country=models.CharField(max_length=50) 11     website=models.URLField() 12     def __unicode__(self): 13         return self.name 14     #默认排序设置 15     #class Meta: 16     #    ordering = ["name"] 17     18     #Admin 声明标志了该类有一个管理界面''' 19     class Admin: 20         pass 21     22 class Author(models.Model): 23     salutation=models.CharField(max_length=10) 24     first_name=models.CharField(max_length=30) 25     last_name=models.CharField(max_length=40) 26     email=models.EmailField(max_length=30) 27     #headshot = models.ImageField(upload_to='/tmp') 28     def __unicode__(self): 29         return '%s %s' % (self.first_name, self.last_name) 30     #Admin 声明标志了该类有一个管理界面''' 31     class Admin: 32         pass 33 34 class Book(models.Model): 35     title=models.CharField(max_length=100) 36     authors=models.ManyToManyField(Author) 37     publisher=models.ForeignKey(Publisher) 38     publication_date=models.DateField() 39     num_page =models.IntegerField(blank=True,null=True) 40 41     def __unicode__(self): 42         return 'Book name :%s' % self.title 43     #Admin 声明标志了该类有一个管理界面''' 44     class Admin: 45         list_display    = ('title', 'authors', 'publication_date') 46         list_filter     = ('publisher', 'publication_date') 47         ordering        = ('-publication_date',) 48         search_fields   = ('title') 49 50 class AuthorAdmin(admin.ModelAdmin): 51     list_display = ('first_name','last_name','email') 52     search_fields = ('first_name','last_name') 53 54 class PublisherAdmin(admin.ModelAdmin): 55     list_display = ('name','address','city','state_province','country') 56     search_fields = ('name','address') 57 58 59 class BookAdmin(admin.ModelAdmin): 60     list_display = ('title','num_page','publication_date') 61     search_fields = ('title','num_page') 62     #list_filter = ('publication_date')#添加过滤器 63     # 注意 64     # # 其接受的是字符串,而非元组 65     # 结果会显示逐层细分的日期过滤 66     #date_hierarchy = 'publication_date' 67     #ordering = ('-publication_date') #使用ordering指定默认的排序方式 68     #fields = ('title','authors','publication_date')#自定义字段显示顺序 69     #filter_horizontal = ('authors') # 定义多项选择 70     #raw_id_fields = ('publisher')  # 展示成文本框

 

2、配置manage.py

  在 INSTALLED_APPS 中添加设置 "django.contrib.admin"

  取消

"django.contrib.sessions" ,

 "django.contrib.auth" ,

 "django.contrib.contenttypes"

  前面的注释

  添加 'books',配置。

 

INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions',#打开 Sessions功能    'django.contrib.admin', #'django.contrib.comments',     #'django.contrib.sites',     #'django.contrib.messages',    # 'django.contrib.staticfiles',     'books', # Uncomment the next line to enable the admin:     # 'django.contrib.admin',     # Uncomment the next line to enable admin documentation:     # 'django.contrib.admindocs', )

 

3、urls.py 配置

 

from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', url(r'^admin/', include(admin.site.urls)), )

 

4、创建admin.py文件

在Books文件目录中添加admin.py文件,注册管理模型(ModelAdmin),代码如下:

 

# -*- coding:utf-8 -*- """""  * User: lhj588  * Date: 2011年11月1日  * Time: 上午11:02  * Desc: """"" from django.contrib import admin from models import AuthorAdmin,PublisherAdmin,BookAdmin from books.models import Publisher,Author,Book admin.site.register(Publisher, PublisherAdmin) admin.site.register(Author, AuthorAdmin) #连同ModelAdmin类注册 admin.site.register(Book, BookAdmin)

 

 

5、同步数据库

运行 python manage.py syncdb

 

在 INSTALLED_APPS 里有 "django.contrib.auth" 的情况下,当你第一次运行 syncdb 时会被问是不是需要创建超级用户。 如果你在那时不做这个事情,

需要运行 django/contrib/auth/bin/create_superuser.py 来创建有管理权的用户。否则你不可能登录进管理界面。

 

6、重启服务器

运行 python manage.py runserver 以启动开发服务器

 

7、访问测试

访问

如果上面配置有问题,则会出现错误页面,

如果上面配置没有问题,则直接显示后台登录页面

登录帐号和密码就是在同步数据库是设置的帐号和密码。

登录成功后就显示后台管理页面图:

 

该后台管理页面中就包含了用户权限管理和Books管理,

A、权限管理

     可以添加、修改、删除用户,角色,

     可以设置用户权限,非常简单能活

B、Books管理

   添加、修改、删除等操作作者、出版社、图书

   简单配置就是实现后台管理功能,维护Books数据。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载地址:http://sqvkm.baihongyu.com/

你可能感兴趣的文章
2019亚洲物联网安全创新国际峰会将于5月在上海开幕!
查看>>
C#反射的实现
查看>>
【想法】滴滴更新迭代功能
查看>>
aircrack-ng破解WiFi密码
查看>>
iOS设备中WiFi、蓝牙和飞行模式的开启与关闭
查看>>
事务传播行为和特性
查看>>
[Ting's笔记Day3]解决Git常见错误non-fast-forward问题
查看>>
浅谈测试部领导者的工作职责
查看>>
严重: Servlet.service() for servlet jsp threw exception java.lang.IllegalStateException: getOutput...
查看>>
Android开发网上的一些重要知识点[经验分享]
查看>>
Guid.NewGuid().ToString()的几种格式
查看>>
vc中异常捕捉的最后一道屏障-SetUnhandledExceptionFilter
查看>>
Windows下免oracle client的PLSQL的配置
查看>>
Solr -- Solr Facet 2
查看>>
java中的垃圾回收
查看>>
解释string类型的输入操作符和getline函数分别如何处理空白符
查看>>
客户端域用户时钟同步
查看>>
bzoj3991[SDOI2015]寻宝游戏
查看>>
将数字转换为字符串(int2str)
查看>>
解决「matplotlib 图例中文乱码」问题
查看>>