Django step by step

###一,准备 1,Django支持的python版本

Django version Python versions
1.4 2.5, 2.6, 2.7
1.7, 1.8 2.7 and 3.2, 3.3, 3.4
1.9 2.7, 3.4, 3.5

2, 安装Django

sudo pip install Django
>>> import django
>>> print(django.get_version())
能看到版本号说明安装成功

3, 教程
Django中文教程

4, Demo需求说明
完成一个打卡程序后端,支持创建新的打卡任务以及完成打卡动作和查看打卡历史记录。

###二,新建工程 1,创建工程

django-admin startproject lifewatcher

这个命令会生成一个项目文件夹lifewatcher。

lifewatcher/
    manage.py
    lifewatcher/
        __init__.py
        settings.py
        urls.py
        wsgi.py

2,初始工程介绍

外层目录:工程的容器,可以随意重命名
manage.py: 很有用的命令行工具,之后开发过程中会经常用到
内层文件夹:包含工程配置文件,资源路由配置文件,以及部署应用时的入口WSGI文件

3,设置数据库 对于初学者来说,默认的sqlite是很不错的选择。之后如果真的要在生产环境部署应用,可以通过安装其他数据库的driver很轻松地迁移数据库方案。

对于sqlite来说,配置非常容易。只需要修改DATABASES配置中的NAME属性即可,此处填写系统中sqlite数据库文件的绝对路径。如果要使用其他数据库,则还需填写用户名、密码、Host等信息。

创建数据库时有个大坑务必注意:Django assumes that all databases use UTF-8 encoding。 创建数据库时一定要注意使用utf-8编码。

Django默认安装的一些APP需要依赖数据库表,要运行这些APP,可以使用python manage.py migrate

###三,创建第一个APP 1, start a new app

python manage.py startapp punch

这个命令会在工程中生成一个app的新目录punch。

punch/
    __init__.py
    admin.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

2, 编写第一个model
Django中的model体现了DRY的原则。我们希望在这一处定义我们的业务模型,而后在系统的其他地方直接应用这个模型。之后在数据库交互上我们可以渐渐体会到model的用处。在我们的例子中,需要两个model:事务模型和记录模型。
关于模型编写

class Job(models.Model):
    job_name = models.CharField(max_length=200)
    # Type: 1 for single mode; 2 for start-stop mode
    job_type = models.IntegerField(default=1)


class PunchRecord(models.Model):
    job_id = models.ForeignKey(Job)
    punch_time = models.DateTimeField('date published')
    # 0 for single punch, 1 for start, 2 for stop
    punch_type = models.IntegerField(default=0)

3,激活新app
1)在工程的settings文件中的INSTALLED_APPS设置中添加punch应用。这样Django框架便能感知到punch app的存在。
2)生成model变更文件0001_initial.py

python manage.py makemigrations punch   

3) 创建数据库表

python manage.py migrate

注:python manage.py sqlmigrate punch 0001可查看sql语句

4) 数据库操作方法

4, 添加url映射关系
1) 在punch工程中添加urls.py文件, 并在项目的主urls.py中添加/punch路径映射到punch app中的urls

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
]

添加url映射的教程

2) 在view.py中添加一个index方法,里面直接给出一个返回

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

至此,使用python manage.py runserver启动服务器,已经可以访问到/punch接口了。

###四,编写REST接口 1,支持CURD操作
http://www.django-rest-framework.org/tutorial/1-serialization/

未完待续

Written on July 20, 2015