1、Django,是python的web框架
什么是框架,什么是模块,二者的区别?
**模块:**为了完成一件事,或者某些事情,而封装的代码,提供了一些封装好的方法和属性,封装了代码。
框架: 提供方法和属性的同时,也提供处理事务的逻辑,扩展了代码。
2、Django历史
很久以前,劳伦斯集团的下属子公司–新闻出版社需要开发一款 cms(content manager system)信息管理系统。
很巧地是,开发部门里面都是python高手,于是决定使用python开发cms,于是出现了django 2005
期间2008年 Django1.0版
2018年 Django2.0版发布(不推荐使用,还有很多坑)
推荐使用长期维护版
Django1.11 和Django1.8
3、Django安装
1、不指定版本安装,默认安装最新版
pip install django
2、指定版本安装
pip install django==1.11
**建议:**在开发Django之前,使用虚拟环境来引用框架,方便将来项目的部署
File–>settings–>Project:项目名称–>Project Interpreter配置虚拟环境
3、检查Django是否安装成功
(1)cmd django-admin --version
(2)进入python,import django
django.get_version()
若果能获得版本号,则认为安装成工!
4、实现第一个Django项目
1、创建项目
cmd 进入项目文件夹,执行django-admin startproject projectName(项目名称) # 项目自定义
我这里先创建了一个day52、django入门的文件夹,cd到day52、django入门,执行命令django-admin startproject mysite
然后django自动创建一个项目mysite,项目目录解释:
django创建成功后,项目结构如上图
|-- mysite #表示项目名称
|-- mysite # 根模块,根模块和项目名称保持一致
|-- __init__.py # 模块描述文件
|--settings.py # 项目配置文件
|-- urls.py #根路由模块
|-- wsgi.py #django实现了wsgi,web网关服务接口
|-- manage.py # 该文件是项目的命令文件,不需要我们修改
2、启动项目
cd 项目主目录
python manage.py runserver
PS:指定端口启动python manage.py runserver[port]
指定ip和端口启动python manage.py runserver[ip:port]
注意:若果想使用ip来访问项目,那么首相应该配置文件(settings/py)中的ALLOWED_HOSTS=["*"]
启动项目成功,按住CTRTL+点击链接,进入浏览器
这里已经启动成功了,可以通过配置文件,将英文修改为中文
settings.py中的 LANGUAGE_CODE = 'en-us’修改为中文LANGUAGE_CODE = ‘zh-Hans’
5、创建子模块(功能模块)
在Django中,一般而言,我们创建子模块实现功能
1、 cd 项目主目录下
django-admin startapp 子模块名称
项目结构图:
|-- mysite # 项目名称
|-- mysite # 根模块
|-- __init__.py # 模块描述文件
|-- settings.py # 项目的配置
|-- wsgi.py # 实现了wsgi web网关接口
|-- blog # 子模块
|-- migrations # 同步数据的迁移文件的文件夹
|-- __init__.py # 模块描述文件
|-- admin.py # 后台管理系统用来管理子模块中的模型类的文件
|-- views.py # 子模块的视图文件
|-- urls.py # 需要我们创建,子模块的路由文件
|-- models.py # 定义模型类
|-- tests.py # 测试文件
|-- apps.py # 定义子模块项目项的文件
|-- manage.py # 项目的命令文件
2、 将子模块注册到配置文件中
在根模块的settings.py配置文件中添加子模块名称 INSTALLED_APPS=[“子模块名称”]
3、 创建子模块路由
创建urls.py编写对应的路由匹配
from django.http import HttpResponse
# 该函数叫做视图函数
# 有一个参数,参数为请求头对象
def index(request):
# 返回一个相应头对象
return HttpResponse("<h1>项目页面</h1>")
def login(request):
# 返回一个相应头对象
return HttpResponse("<h1>登录页面</h1>")
def register(request):
# 返回一个相应头对象
return HttpResponse("<h1>注册页面</h1>")
def list(request):
# 返回一个相应头对象
return HttpResponse("<h1>用户列表</h1>")
6、启动项目