再一次开始了django的学习,希望这次能够因为实际应用的开发深入进去。
安装
django开发环境搭建文档 版本 1.5.5 (文档是1.5.5)
mkvirtualenv djtest
pip install django==1.5.5`
一、Writing your first Django app part1
- 修改端口
python manage.py runserver 8080
- 外部ip访问
python manage.py runserver 0.0.0.0:8000
建立一个项目
django-admin.py startproject mysite
目录结构
djtest/mysite
|---
|---mysite
| |---urls.py
| |---__init__.py
| |---wsgi.py
| |---settings.py
|---manage.py
设置 settings.py
数据库设置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/home/***/djtest/mysite/mysite/mysite.db',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
设置中文环境
TIME_ZONE = 'Asia/Shanghai'
LANGUAGE_CODE = 'zh-cn'
建立必要的表
python manage.py syncdb
建立应用
python manage.py startapp polls
目录结构
djtest/mysite/polls
|---
|---__init__.py
|---models.py
|---views.py
|---tests.py
建立数据 models
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
修改 settings.py 激活 polls应用
INSTALLED_APPS = (
...
'polls',
)
在添加model前,需要告诉South准备迁移数据库
(djtest)$ python manage.py schemamigration elist --initial
(djtest)$ python manage.py migrate elist
这样south会建立一个合并文件,用于应用和恢复数据库操作,在修改django 的 model后,可以使用命令
(djtest)$ python manage.py schemamigration elist --auto
#检测对models的更改,但并不实际提交数据库
(djtest)$ python manage.py migrate elist #实际更改数据库
增加 unicode() 方法
class Poll(models.Model):
# ...
def __unicode__(self): # Python 3: def __str__(self):
return self.question
class Choice(models.Model):
# ...
def __unicode__(self): # Python 3: def __str__(self):
return self.choice_text
增加一个自定义方法
import datetime
from django.utils import timezone
# ...
class Poll(models.Model):
# ...
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)