1. 有时候想根据己有数据库生成Model,Django也是可以做到的:python manage.py inspectdb >models.py
上回介绍了Django在windows下的环境搭建,今天介绍Django的杀手锏级应用:Admin的生成。为了能够讲明白,下面简要说一下环境:Django版本:Django1.1.1 简单示例:Blog 数据库:sqlite3
1,新建一个Project
只要你上回你能顺利配置好Django1.1.1的环境,你现在可以打开Dos控制台,来到你想安放Project的目录下;我把Project(命名为v111)暂且放到study_django目录下,于是Dos下输入指令:
d: ,回车
cd study_django ,回车
这时来到了想到的目录下,接着新建Project
django-admin.py startproject v111 ---(django-admin.py是django的全局命令,我们上回已经把它加入系统变量里了,startproject 表示新建工程,v111是工程的名称)
这时你在目录下,可以看到有文件生成了,比如:__init__.py manage.py settings.py urls.py 这四个python文件,这就是整个Project的全部文件,manage.py是主角,我们之后就使用它生成自己想要的东西了,django-admin.py这个全局模块,当我们新建完毕Project,就很少用到它了,先忘记它吧。
Project算是建立好了,在Project里新建个App (App,暂且叫应用吧,一个Project里可以放多个独立的应用A,Django提倡App的热插拔,很好的设计理念),进入刚才新建的Project里
cd v111 回车
来到了Project的目录下,
manage.py startapp blog 回车
这时打开Project的目录 发现了一个文件夹blog,里面有 __init__.py models.py test.py urls.py四个文件,这就是一个独立的blog App了。
太好了,整个Project就这么几个文件, 两行的django命令
django-admin.py startproject v111
manage.py startapp blog
就可以完成了,都简单不过的了。接下来我们可以集中精力,编写自己的网站了,借助Python简单的特点,下来的步骤也不会写很多代码。
2 设置一下Project全局变量,就是让Project更好地跑我们的blog应用。
首先在Project目录下,找到settings.py 指定数据库:
DATABASE_ENGINE
=
"
sqlite3
"
DATABASE_NAME
=
"
study_django_v111.db3
"
DATABASE_USER
=
""
DATABASE_PASSWORD
=
""
DATABASE_HOST
=
""
DATABASE_PORT
=
""
以上的代码:
DATABASE_ENGINE = "sqlite3"
是指定数据类型,我们使用内置的 sqlite3
DATABASE_NAME = "study_django_v111.db3"
是数据库的名字,我们指定的是 study_django_v111.db3
然后把blog和admin应用 插到Project里
INSTALLED_APPS
=
(
"
django.contrib.auth
"
,
"
django.contrib.contenttypes
"
,
"
django.contrib.sessions
"
,
"
django.contrib.sites
"
,
"
django.contrib.admin
"
,
"
blog
"
,
)
INSTALLED_APPS
本来就用一些基本的应用,我们只需写入两行代码
"django.contrib.admin",
"blog",
Project基本的全局变量已经设置好了.
接下来关键的东西是编写blog的实体,在blog/models.py下,写我们需要的实体字段:
#
coding=utf-8
from
django.db
import
models
from
django.contrib.auth.models
import
User
#
Create your models here.
class
Blog(models.Model):
title
=
models.CharField(u
"
标题
"
,max_length
=
60
)
content
=
models.TextField(u
"
正文
"
)
user
=
models.ForeignKey(User,verbose_name
=
u
"
作者
"
)
category
=
models.CharField(u
"
类型
"
,max_length
=
20
)
status
=
models.NullBooleanField(u
"
可用
"
)
created_at
=
models.DateTimeField(u
"
建立时间
"
,auto_now_add
=
True)
updated_at
=
models.DateTimeField(u
"
修改时间
"
,auto_now
=
True)
class
Meta:
verbose_name
=
u
"
A.博客
"
verbose_name_plural
=
u
"
A.博客列表
"
ordering
=
(
"
-created_at
"
,)
get_latest_by
=
"
created_at
"
def
__unicode__
(self):
return
self.title
为了简单说明,整个models模块就是一个实体类Blog。
在blog文件夹了,新建admin.py模块(blog/admin.py) ,在该模块下编写代码,让Django自动生成Admin应用,写入代码如下:
#
coding=utf-8
from
django.contrib
import
admin
from
models
import
*
class
BlogAdmin ( admin.ModelAdmin ) :
list_display
=
(
"
user
"
,
"
title
"
,
"
category
"
,
"
status
"
,
"
created_at
"
,
"
updated_at
"
,)
list_display_links
=
(
"
title
"
,)
list_filter
=
(
"
user
"
,
"
title
"
,
"
status
"
,
"
created_at
"
,
"
updated_at
"
,)
ordeing
=
(
"
-created_at
"
,
"
-updated_at
"
,)
search_fields
=
(
"
title
"
,
"
user
"
,
"
content
"
,)
admin.site.register ( Blog, BlogAdmin )
这时该到收尾工作了,我们回到Dos控制台,执行命令:
manage.py syncdb 回车
Django就会根据你刚才的 编写的models.py下的Blog实体类生成 数据表,同时也会生成一些基本的表,就看Project下的INSTALLED_APPS插入了什么App。
回车后你会看到控制台表的全部过程,这个不用我们操心,就全部交个Django来做好了,但是生成过程中,Django需要输入一个后台的超级管理员账号,
出来Would you like to create one now? (yes/no):的时候,输入 yes 回车,按照指令提示,完成新建工作即可。
显示的语句如下:
D:\study_django\v111>manage.py syncdb
Creating table auth_permission
Creating table auth_group
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table django_admin_log
Creating table blog_blog
You just installed Django"s auth system, which means you don"t have any superuse
rs defined.
Would you like to create one now? (yes/no): yes
Username: baoyalv
Password:
Password (again):
Superuser created successfully.
Installing index for auth.Permission model
Installing index for auth.Message model
Installing index for admin.LogEntry model
Installing index for blog.Blog model
等Django执行完了以上的工作,我们在控制台输入 :manage.py runserver 回车
来启动整个Project,当Django启动了内置的web 服务器,我们就可以浏览我们的admin 页面了:
打开浏览器,在地址栏上 输入地址:http://127.0.0.1:8000/admin
怎么样,登录页面出来了吧,用刚才的我们新建的管理员账号登陆进去,你就能看到 blog 和user group的相关模块
后台
管理了。
转载请注明原地址:
http://baoyalv.com/blog/baoyalv/other/2010/03/06/26