用了Django有一段时间 非常喜欢他apps的概念 每一个功能都可以当做一个app 可方便的组织和管理。但有一个问题就是往往在一个app里的views 和 models 里要写好多的代码,所以我想应该化整为零的来管理。
下面是我的目录结构
project_dir/
ahead/
settings/
__init__.py
development.py
production.py
static/
templates/
layouts/
base.html
_header.html
_footer.html
index.html
utils/
__init__.py
lazy.py
db.py
views/
__init__.py
home.py
manage.py
我单独建了了一个settings文件夹,原有的settings.py变成了settings/init.py 然后development.py和production.py分别导入应用init.py里的变量 然后再根据各自的环境进行配置管理 例如要想载入开发环境的配置文件只需要
python manage.py runserver --settings=ahead.settings.development
即可 当然也可以在manage.py里做手脚 可以少输入好多字符下面关一下utils文件夹 是为了我这个懒人做准备 写Python每次都要导入很多的库和模块 所有我就建了一个lazy.py的文件 就是导入django里常用的模块 然后我在view里直接
from ahead.utils.lazy import *
就行了db.py 没建一个表起码要有创建日期吧 当然Django的Model创建的时候是没有的 为了省事我创建了一个DateTimeModel, 非常简单 这样创建Model的时候只要继承DateTimeModel的时候就可以自动加上创建和修改数据的时间了
# -*- coding: utf-8 -*-
from django.db import models
class DateTimeModel(models.Model):
create_at = models.DateTimeField(auto_now_add=True)
update_at = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
- 最后就是views目录 往往一个app会有很多的功能 如果只用一个views.py可能一个文件会写的很长很长 所以建一个views文件夹 把没一个功能点都可以分成一个文件 这样就可以方便的管理 我比较倾向于rails的模式 比如user.py里创建index, add, create, edit, update, delete方法代表各自的功能 简单明了
是不是每次都这样建一个项目会很麻烦 所以我们要把上传到github上 然后在每次创建项目的时候只要在命令行输入
django-admin.py startproject –template=https://github.com/julytwilight/django-template/zipball/master your_project_name 即可