本文部分参照https://docs.djangoproject.com/en/1.6/intro/tutorial01/
如有错误请不吝赐教,非常感谢。
本机环境:
操作系统:Ubuntu12.04
python2.7.3
Django-1.6.1
一.关于Django
Django是一个Web开发框架,提供了划分明晰的MVC开发模型,最具吸引力的是其orm、admin模块、模板引擎,code generate可以为开发工作节省相当可观的时间。
一.创建工程
1.创建一个Project
john@john-pad:~/python_workspace/web$ django-admin.py startproject website
工程目录结构是这样的:
website
manage.py
website
__init__.py
settings.py
urls.py
wsgi.py
django1.6之后,工程的目录结构变成当前的形式,而之前版本的目录结构可能是这样的
website
manage.py
__init__.py
urls.py
settings.py
django1.6项目的顶层目录只是一个容器而已,毋须在意。
现在就可以启动server访问工程了:
john@john-pad:~/python_workspace/web/website$ python manage.py runserver
Validating models...
0 errors found
January 20, 2014 - 02:43:39
Django version 1.6.1, using settings 'website.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
如下显示表明启动成功
2.修改数据库连接、语言、时区
打开website/website/settings.py,修改以下几处:
a.数据库:本机用的是mysql数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'website',
'USER': 'root',
'PASSWORD':'root',
'HOST':'127.0.0.1',
'PORT':3306
}
}
请酌情修改name\user\password\host\port几项
b.语言编码
LANGUAGE_CODE = 'zh-cn'
c.时区
TIME_ZONE = 'Asia/Shanghai'
保存重启server
3.同步数据库
python manage.py syncdb
需要输入一个系统管理员帐号及密码
4.登录管理界面
使用第3步创建的管理员登录管理界面
二.创建App-etlweb
在本例中,我们创建一个管理数据传输任务的app
1.在website目录执行:
django-admin.py startapp etlweb
etlweb的目录结构如下:
etlweb/ __init__.py admin.py models.py tests.py views.py
2.创建model
我们将创建两个类:Task(传输任务) 、TaskCode(传输任务的执行代码)
打开website/etlweb/models.py,添加:
#*-*coding:UTF-8 *-*
from django.db import models
from django.contrib.auth.models import User
class TaskCode(models.Model):
name = models.CharField(max_length=32,verbose_name='名称')
content = models.TextField(verbose_name='内容')
creator = models.ForeignKey(User,verbose_name='创建人')
create_time = models.DateTimeField(auto_now=True,verbose_name='创建时间')
def __unicode__(self):
return self.name
class Meta:
verbose_name='任务代码'
verbose_name_plural = '任务代码'
class Task(models.Model):
task_name = models.CharField(max_length=32,verbose_name='任务名称')
task_code = models.ForeignKey(TaskCode,verbose_name='任务代码')
creator = models.ForeignKey(User,verbose_name='创建人')
create_time = models.DateTimeField(auto_now=True,verbose_name='创建时间')
description = models.CharField(max_length=256,verbose_name='任务描述')
def __unicode__(self):
return self.task_name
class Meta:
verbose_name='任务'
verbose_name_plural='任务'
3.注册到admin模块
打开website/etlweb/admin.py,添加:
from models import Task,TaskCode
from django.contrib import admin
class TaskCodeAdmin(admin.ModelAdmin):
list_display = ('name','creator','create_time',)
class TaskAdmin(admin.ModelAdmin):
list_display = ('task_name','creator','create_time')
admin.site.register(TaskCode,TaskCodeAdmin)
admin.site.register(Task,TaskAdmin)
打开website/website/settings.py,在INSTALLED_APPS元组中添加'etlweb'项
4.同步数据库,重启server
python manage.py syncdb
python manage.py runserver
至此可以在admin模块管理这两个model
三.关于list_filter与search_fields
可以在website/etlweb/admin.py中对应俄*Admin类中添加list_filter与search_fields实现按条件过滤:
list_filter = ['field_name']
search_fields = ['field_name']