这是「写点 Python」的第 1 篇,也是「django 学习」第 1篇。
前言
关于学习 django,其实很早之前就开始接触了,只不过那时候只是单纯的学,并没有记录下来。之后打算每周至少更新一篇,主要是自己碰到的问题或者一些比较好玩的点。
这篇是虚拟环境以及一个简单的学生管理系统
虚拟环境
不知道大家用的是不是 anaconda,反正我是。确实 anaconda 对于包管理很方便,不用去考虑那么多,只需要一键安装就可以了。但是吧,最近刚买了一门 django 的课,里面的课程是用的 Python2,所以就想着在自己电脑上基于 Python2 装个虚拟环境。
开始之前,输入 conda env list
,可以查看当前系统现有的环境
<img width="428" alt="1" src="https://user-images.githubusercontent.com/31091355/44954510-bacc0500-aed5-11e8-88bf-dd530505fcef.png">
conda create -n py2 python==2.7
,-n name,也就是基于 Python2.7 创建一个名为 py2 的环境
conda info --env
,可以查看系统下环境的路径,activate C:\anaconda3\envs\py2.7
,激活虚拟环境,后面那串就是我电脑上 Python2.7 的路径
<img width="371" alt="2" src="https://user-images.githubusercontent.com/31091355/44954594-d552ae00-aed6-11e8-9196-ae5a53772fcb.png">
可以在开始菜单下的 Anaconda3 下的 Anaconda Navigigator 看到 Python 的环境
<img width="960" alt="3" src="https://user-images.githubusercontent.com/31091355/44954670-f36cde00-aed7-11e8-8ea0-f054a4679c95.png">
好了,接下来我们就可以基于 Py2 创建虚拟环境了
mkvirtualnev test
新建虚拟环境
pip install django==1.11.2
安装 django
<img width="785" alt="3" src="https://user-images.githubusercontent.com/31091355/44954631-5dd14e80-aed7-11e8-9ea7-c28de3de6007.png">
至此虚拟环境就装好了
关于如何安装 anacoda,可以大伟的这篇 anaconda
学员管理系统
需求
提供一个学院管理系统,一个前台页面,展示现有学员,并供新学员提交申请,一个后台,能够处理申请。
初始化环境
虽然可以不用创建虚拟环境,就可以直接创建。但是我还是建议在虚拟环境中安装,因为在实际开发中,你可能不止维护一个项目,不同的项目依赖的环境也不同。
好了,选择一个你喜欢的目录,比如 cd C:\Code
下:
-
django-admin startproject stu_manager
# 创建项目 -
python manage.py startapp student
# 创建应用
编写代码
我们可以在 model
层开始写代码,这是一个简单的需求,只需要一个 model 就可以满足了。
接下来编写 admin.py
写完这两个配置,在 settings.py
中的 INSTALLED_APPS
中添加 student
,settings.py
文件:
好了,后台部分就完成了,我们来创建表以及超级用户:
-
python manage.py makemigrations
# 生成迁移文件 -
python manage.py migrate
# 生成表 -
python manage.py createsuperuser
# 创建超级用户
启动项目,python manage.py runserver
,接着在浏览器输入 http://127.0.0.1:8000/
,会看到一个提示页面。我们可以输入 http://127.0.0.1:8000/admin
进入后台,就可以看到一个后台管理系统了。
基础配置
前台编写
首先我们需要编写 forms.py
,代码如下:
接着编写 views.py
:
最后在 templates
下新建一个 index.html
:
说下几个点:
-
StudentForm
中的clean_<field>
表示自己定义某种方式来校验该字段; -
class Meta
相当于一种映射(个人理解),fields
指定为Student
模型类中的字段,也就是我们在前台看到的字段; -
index
视图,就是先判断是否是 POST 请求,然后校验,如果检验成功,那么就新创建一个 student 对象,赋值,保存。然后重定向到主页。