前言
- 就是我们本次教程主要以项目为主,不推荐使用其为文档使用
- 我们本次不做博客
- 本次的项目地址在
gitee上 - 本次项目采用
Django LTS 3.2
为什么用 Django?
其实用几句话就可以说清楚。
- 方便到家了。隔壁的
Flask同学要实现基础的数据库功能还要安装两个库,而Django呢?直接是内置功能。 - 项目结构清晰。任何一个
Django项目,都要符合Django给出的规范,这在阅读开源项目的时候很有用。
Flask:与框架斗争! - 周边库多。虽然说基础功能都给你内置了,但是还是有些花边功能要第三方社区实现的。而
Django在PyPI的第三方库的数量是高于Flask的。
所以说,还是很值得用 Django 库的。
安装
如果你没有安装 Python 3 的话,Bing 见。
我们在此假设你安装了 Python 3。
用过 Python 3 的同学肯定知道:安装库不就一行指令就完事了吗!
pip install django==3.2
TIPS: Mac OS 用户请将上面的指令换成
pip3 install django==3.2
然后经过了10来分钟的等待,显示超时。
很显然,PyPI 那个服务器在国内基本上不在可用状态。
所以说,我们要使用我们大天朝的镜像服务器来安装 Django:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django==3.2
Mac OS 用户请将
pip换成pip3,接下来的几个扩展库的安装将不在赘述。
然后呢,1分钟后,世界和平。
启动你的第一个项目
Django 并不像 Flask,随便搞一个文件就可以启动了,我们需要启动一个项目:
django-admin startproject <你的项目名>
TIPS:项目名里面不要有横杠(-)
然后查看一下你刚才操作时所在的文件夹:

你会发现多出了一个文件夹,以你的项目名命名。
我们来稍微整理一下目录结构:
—— <你的项目名>/ # 就是刚刚的那个文件夹
———— <还是你的项目名>/ # 里面是一些 Django 帮你自己填进去的一些有关项目的玩意,以便启动
———— manage.py # 这玩意是对 Django 启动项目用的脚本的一个封装,用于启动项目
好了,终于来到这一步:启动项目!
python manage.py runserver
TIPS:Mac OS 用户们,将
python替换成python3!
在输出一大堆东西的情况下,我们打开浏览器,访问 127.0.0.1:8000:

“哇”,可能你会发出感叹,“Django 是世界上最好的开发平台!我还没写代码就有那么多内容了!”
同学,告诉你一个事实:这只是 Django 在告诉你,你的项目创立的很成功!
接下来,你还是要写很多代码。
所以说,请做好准备!
APP 这个东西
如果你的项目还开着的话,请先按下 Ctrl-C,停下项目。
然后,我们要新增一个 APP:
python manage.py startapp note
等等,APP 是个什么玩意?
可以这样理解:项目是一个大玩意,里面包括着整个网站的资源
而 APP 则是一个小玩意,专心做好一项功能。
例如,一本同学录,他会有班级简介、同学签名、同学介绍、老师介绍这些东西;
其中“同学录”就是一个项目,它大而全,包含了所有功能
而班级简介、同学签名、同学介绍、老师介绍则是 APP,它负责自己的功能,组成同学录(项目)
然后,我们发现项目文件夹里多了一个名为 note 的文件夹。
我们来观察这个文件夹的结构:
—— note/ # 整个 APP 都存储在这里
———— migrations/ # 先不要管,待会儿要用
———— __init__.py # 让 Python 认为这是一个库,Django 好调用
———— admin.py # 用于让 Django 给你准备的管理员页面识别出你需要的玩意
———— models.py # 用于创建 model(待会儿说是什么)
———— tests.py # 写测试,本次不会用到
———— views.py # 负责编写具体的逻辑
好了,我们来讲讲,model 是个什么玩意?
举个栗子,例如我们有一个和谐有爱的班集体,里面有很多同学。
每个同学都有一些自己的个人信息:例如他是1号,姓名陈仁杰,代号穿山甲,入学日期2016.09.01······
这种个人信息的集合就叫做 model。
model 的编写
Django 非常方便,因为它给我们隐藏了与数据库通信的细节,我们并不需要编写一串一串面条般的 SQL 语句。
所以说,我们打开 note APP 下的 models.py 文件,来开始愉快的写代码吧!
from django.db import models
# Create your models here.
class Note(models.Model):
note_text = models.TextField()
title = models.CharField(max_length=20)
date = models.DateTimeField(auto_now_add=True)
现在,我们开始解释这些代码。
Line 1:这行代码是导入 Django 自带的 models 模块,这玩意用于导入所有 model 的爸爸 models.Model 和各种字段。
Line 2-4:空行+注释,跳过。
Line 5-7:这些玩意是需要我们自己写的代码。由于复杂,逐行分解。
Line 5:
class Note(models.Model):
这一行是定义了一个类,也是定义了刚刚提到的 model。
熟悉 Python 的朋友可以看出来,我们继承了 models.Model 类,之所以这样,是因为 Django 很挑剔,只有特定的类才能入它的法眼,而这种特定的类,统统要继承 models.Model 类。
Line 6:
node_text = models.TextField()
这一行,我们定义了一个字段。
什么是字段?回到同学录的例子,想想一下“同学信息”这个 model,它拥有姓名、生日、号数、爱好等等要填写的。
其中姓名、生日、号数、爱好这些玩意,就是”同学信息“这个 model 的字段。
Line 7:
title = models.CharField(max_length=20)
本行比较简单,与上一行有异曲同工之处。
不过有一个神奇的参数 max_length,这玩意规定了字符字段的最大长度。
Line 8:
date = models.DateTimeField(auto_now_add=True)
这也是一个字段,不过有一个地方:auto_now_add=True 是什么?
是这样的,由于又很多 model 都要标记自己创建的时间,所以说聪明的 Django 就给日期字段添加了这个参数。
这个参数的功能是:如果为 True,就在 model 添加的时候自动字段代表的时间添加为现在的时间。
就是这样!
未完待续······
浙公网安备 33010602011771号