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'),
]
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/
未完待续