基础铺垫
Django是做web服务器的,Mac,Windows,Linux 三种系统都支持,工作时可以根据自己的喜好进行选择。
软件支持
Python: Django基于Python,2.x和3.x都是提供支持的
pip:Python的一个包管理工具
mysql:常用数据库之一
virtualenv:Python专属的虚拟环境,用来保持一个干净的环境,运行的项目Django版本不同时,采用虚拟环境进行分别隔离运行。
虚拟化技术(针对virtualenvb补充)
- 一、虚拟机
常见的有vmware,可能会有一些卡,但是它模拟的是一整台电脑
- 二、环境容器
模拟运行环境,可以为python,java等等很多提供环境,资源消耗低。
- 三、虚拟环境
C/S,B/S模型介绍
指的是客户端 发送一次请求给服务器,服务器再返回请求给客户端
而在早期通过浏览器(Browser)作为客户端的则称为B/S,而浏览器本身也为客户端的一种。
只不过比客户端更加通用。
而Django是为了实现服务器端的开发
这是一个交互式的过程,发送一个请求,返回一个响应,而不是单向。
Django发布于2005年,是当前Python世界里最负盛名且成熟的网络框架。最初用来制作在线新闻的Web站点。
Django是一个用Python编写的开放源代码的Web应用框架(源代码是开源的,遵守BSD版权)。采用了MVC的框架模式,也有很多人把它·称为MVT (MTV)模式。
学习长支持版本
MVC设计模式
一种软件设计典范,用一种业务逻辑,使数据,界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在
改进和个性化定制界面与用户交互的同时,不需要重新编写业务逻辑。
MVC被独特的发展起来用于映射传统的输入,处理和输出功能在一个逻辑的图形化界面结构中。
核心思想:解耦
优点:降低个模块之间的耦合性,方便变更,更容易重构代码,最大程度实现了代码的重用。
**MVC ( Model, View, Controller )
Model
用于封装与应用程序的业务逻辑相关的数据及对数据的
处理方法,是Web应用程序中用于处理应用程序的数据逻辑部
分,Model通常只提供功能性的接口,通过这些接口可以获取
Model的所有功能。
View
负责数据的显示和呈现,View是对用 户的直接输出。(网站网页)
Controller
负责从用户端收集用户的输入,可以看成提供View的
反向功能,主要处理用户交互。
传统MVC模型
MTV(MVT)设计模式
Django的MTV(MVT)模型
本质上与MVC没什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同。
Model
View
叫做视图函数,处理业务逻辑,并在适当的时候调用Model和Template,相当于MVC中的Controller
Template
负责把页面展示给用户,提供用户的交互界面,相当于传统MVC中的View
注意:Django中还有一个url分发器(也可以叫做路由),主要用来将一个个URL页面的请求分发给不同的View进行处理,View再调用相应的Model和Template。
环境搭建(HELLOWORLD)
当你搭建好helloworled时,说明你已经成功50%了,因为起码代表你的环境搭建成功,因为很多人连环境都需要搭建很久。
一、建立虚拟环境
在ubantu系统中,输入mkvirtualenvs 目录名 -p python所在目录名
来建立虚拟环境
(例如mkvirtualenvs GP1-p /usr/bin/python3
)
退出虚拟环境:deactivate
再次回到之前建立的环境:work on 项目名
二、安装需要的模块包
pip install django==1.11.7
:安装需要的模块包
选择版本用双等于号,版本第一个是大版本,不兼容的版本,第二个11是性能提升的版本,第三个7是一般是修复bug的版本
三、测试模块包是否安装完成
pip list:
查看所有依赖包pip freeze:
查看虚拟环境新安装的包
四、创建一个Django项目
django-admin startproject xxx
创建一个 名字为xxx的工程
例django-admin startproject hellodjango
也可以使用pycharm去创建,但是pycharm知识一个工具,我们需要了解pycharm每一个按钮背后的作用是什么。
创建完成之后,我们可以使用tree
查看项目目录结构
manage: 项目的管理文件,管理功能大部分由这个来实现。
__init__.py:是一个包的标识,有这个文件代表这个文件夹是一个包,没有的话代表这个文件夹知识一个文件夹
settings.py:是功能的全局设置
urls.py:路由器
wsgi.py:全称web servers getway interface 意思是:web网关服务接口(在项目开发差不多,部署到云服务器上访问时使用这个,部署完成世界各地都可以访问)
五、创建自己的具体应用
在manage.py平级的目录中:python manage.py startapp 名称
来创建自己的具体应用(例python manage.py startapp App
)
创建完成后使用tree查看:
会发现多出这么多文件
admin.py:django做后台管理使用的
apps:应用的配置文件
migrations:数据库迁移文件
models.py:用来封装数据的操作,和数据库对接的模型
tests.py:代码写完了,需要写一些测试
views.py:视图函数
六、启动Django服务
python manage.py runserver
runserver是内置的开发服务器,性能低,上线项目不要用。
但是这个服务器也有有点,修改完代码,自动重启,报错时候,返回的错误日志详细,适合开发时候。
django是一个重量级框架,集成东西多,可能会有迁移的报错
图中debug=true指的是调试模式开启,目前是在开发模式中。
到此建立项目环境已经完成。
运行指令补充
python manage.py runserver 0.0.0.0:8000
python manage.py runserver 9000
第一行0.0.0.0:8000是指所有人都能通过8000端口访问网站,加入部署在云服务器上,用户就可以访问了。
第二行是直接本机运行在9000端口中。
使用pycharm打开项目
打开项目以及添加虚拟环境
打开时选择manage.py所在的文件夹目录
切记不能出错。
接着选择file中的settings
再选择 project interpreter中的小齿轮中的add
然后找到刚刚创建的环境中的bin文件中的bin中的python.exe文件添加
到此环境加载完成。
项目settings.py文件内容简介
base_dir
SECET_KEY
四种环境
- 开发环境
- 测试环境
- 演示环境(彩排)
ALLOWED_HOSTS[]
允许访问的主机ip,将允许的ip地址填入,所有人填["*"]
INSTALLED_APPS
MIDDLEWARE
ROOT_URLCONF
根路由配置
ROOT_URLCONF = 'hellodjango.urls'
引号指的是项目中的urls文件TEMPLATES
WSGI_APPLICATION
WSGI_APPLICATION = 'hellodjango.wsgi.application'
指的是调用wsgi.py里的application,部署时使用DATABASES
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
sqlite3指的是一种轻量级的,嵌入式级的数据库
特点:小
使用场景:Android/iOS/wp手机内置的数据库
sql语句操作相似度95%与mysql一样
这种数据库不适用于企业开发,写一写小项目还行AUTH_PASSWORD_VALIDATORS
LANGUAGE_CODE = 'en-us'
语言选择,改为zh-hans为中文
TIME_ZONE = 'UTC'
时间设至,改为中国北京时间,将'UTC'更换为'Asia/shanghai',老外很坏,偏给你搞成上海。
迁移数据
在你启动Django项目时会提醒一行字。
You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
我们先打开sqlite3数据库
打开方式如下:
百度链接https://jingyan.baidu.com/article/e5c39bf5e4f32439d7603387.html
sqlite没有用户名密码,直接登录,不同于mysql
接着在terminal输入python manage.py migrate
进行表迁移
完成之后
点击刷新按钮,会更新出大量新表
这时再启动服务就没有提醒了。
此处评论已关闭