【备忘】Django 常用命令及最佳实践
注意:本文基于 Django 1.8.2 版本
生成数据库迁移脚本(python 脚本)
python manage.py makemigrations polls
说明:polls 是你的应用名字,运行该命令时需要根据你的应用名字进行调整
查看该次迁移需要执行的 SQL 语句(只查看语句,并不应用到数据库上):
python manage.py sqlmigrate polls 0001
说明:polls 是你的应用名字,0001是数据库迁移脚本的序号,运行该命令时需要根据你的应用名字及数据库迁移脚本的序号进行调整
进行数据库迁移:
python manage.py migrate
说明:该命令会执行真正的数据库迁移,即执行上一个命令中的 SQL语句,以实现 Model 变更跟数据库的同步。
最佳实践:
- 对于要赋值当前时间给字段类型为DateTimeField的字段时,用 timezone.now() 代替 datetime.datetime.now() (注意:需要导入 from django.utils import timezone)
- 可以在model 对象上自定义__str__(Python3)或__unicode__(Python 2)方法,让直接输出model 时,更有意义,例如:
def __str__(self): # __unicode__ on Python 2 return self.choice_text
- 将每个 APP 自己的 URL 映射关系,放到 app 自己的目录下面的 urls.py 文件中(改文件需要自己创建),然后在项目的 urls.py 中将其 include 进来,而不要将所有的 URL 都写在项目的 urls.py 下面,更好的做法如下所示(下面例子中的 app 名称为 polls 和 admin):
..... urlpatterns = [ url(r'^polls/', include('polls.urls', namespace="polls")), url(r'^admin/', include(admin.site.urls)), ] .....