Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2841034
  • 博文数量: 348
  • 博客积分: 2907
  • 博客等级: 中校
  • 技术积分: 2272
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-12 09:16
个人简介

专注 K8S研究

文章分类

全部博文(348)

文章存档

2019年(22)

2018年(57)

2016年(2)

2015年(27)

2014年(33)

2013年(190)

2011年(3)

2010年(14)

分类: Python/Ruby

2013-08-08 01:12:27

原文地址:Django admin 站点管理 作者:libydwei2007

最近一直在学习《The Django book》,但是按照书中描述,始终无法激活管理界面。
尝试了很多办法,也参考了相关网友的文章,才初步解决(打开了管理界面)

现在将其中的大概流程分享一下。

首先倒叙一下,我最终是通过Pycharm 建立project的时候,选择enable admin 选项,所以中间省去了很多步骤。
但是如果是出于学习的目的,我们还是要知道各个步骤中的含义。
1.建立project.参照书中,project:pub    ;  app  books.
  修改models.py,创建相应的model;


点击(此处)折叠或打开

  1. from django.db import models

  2. # Create your models here.
  3. from django.db import models
  4. class Publisher(models.Model):
  5.     name = models.CharField(max_length=30)
  6.     address = models.CharField(max_length=50)
  7.     city = models.CharField(max_length=60)
  8.     state_province = models.CharField(max_length=30)
  9.     country = models.CharField(max_length=50)
  10.     website = models.URLField()
  11.     def __str__(self):
  12.         return self.name

  13. class Author(models.Model):
  14.     salutation = models.CharField(max_length=10)
  15.     first_name = models.CharField(max_length=30)
  16.     last_name = models.CharField(max_length=40)
  17.     email = models.EmailField()
  18.     def __str__(self):
  19.         return '%s %s' % (self.first_name, self.last_name)

  20. class Book(models.Model):
  21.     title = models.CharField(max_length=100)
  22.     authors = models.ManyToManyField(Author)
  23.     publisher = models.ForeignKey(Publisher)
  24.     publication_date = models.DateField()

  25.     def __str__(self):
  26.         return self.title
  27. class admin:
  28.     pass
2.在mysql中创建database books,创建用户books.

点击(此处)折叠或打开

  1. 1.C:\Documents and Settings\Administrator>mysql -uroot
  2. 2.
  3. mysql> create database books;
  4. Query OK, 1 row affected (0.00 sec)

  5. 3.
  6. grant all on books.* to identified by "test"; #赋权限

3.修改settings.py

点击(此处)折叠或打开

  1. DATABASES = {
  2.     'default': {
  3.         'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
  4.         'NAME': 'books', # Or path to database file if using sqlite3.
  5.         'USER': 'books', # Not used with sqlite3.
  6.         'PASSWORD': 'test', # Not used with sqlite3.
  7.         'HOST': 'localhost', # Set to empty string for localhost. Not used with sqlite3.
  8.         'PORT': '', # Set to empty string for default. Not used with sqlite3.
  9.     }
  10. }
4.运行 python manage.py syncdb
   在数据库中创建表,索引等。
   如果是第一次运行,此时会要求你填写admin登录的用户明和密码等。
  
5.其他配置文件的修改
   settings.py
   Installed_apps 中去掉Django.contrib.admin 的注释。
   urls.py
   增加
   from django.contrib import admin
    admin.autodiscover()
   去掉 url(r'^admin/', include(admin.site.urls)), 的注释

至此如果正常来讲你已经可以正常打开站点管理界面,但是你并不能管理我们models.py中所建的三个表。
这里还需要增加一个文件,在app books目录下,新建admin.py文件,内容如下:

点击(此处)折叠或打开

  1. __author__ = 'Administrator'
  2. from django.contrib import admin
  3. from models import Publisher
  4. from models import Author
  5. from models import Book
  6. #class ModuleAdmin(admin.ModelAdmin):
  7. # list_display = ['name','manager','isdpool']
  8. # filter_horizontal = ['host']
  9. #admin.site.register(Module,ModuleAdmin)
  10. admin.site.register(Publisher)
  11. admin.site.register(Author)
  12. admin.site.register(Book)
这段代码网友提供的脚本, 因为有些文档中并没有注释掉的这部分,所以这里没有采用。
增加这段代码以后,站点管理已经可以正常使用,并维护我们增加的数据表了。

阅读(1475) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~