Django学习[0] 简介Hellodjango

基础铺垫

Django是做web服务器的,Mac,Windows,Linux 三种系统都支持,工作时可以根据自己的喜好进行选择。

软件支持

Python: Django基于Python,2.x和3.x都是提供支持的
pip:Python的一个包管理工具
mysql:常用数据库之一
virtualenv:Python专属的虚拟环境,用来保持一个干净的环境,运行的项目Django版本不同时,采用虚拟环境进行分别隔离运行。

虚拟化技术(针对virtualenvb补充

  • 一、虚拟机

常见的有vmware,可能会有一些卡,但是它模拟的是一整台电脑

  • 二、环境容器

模拟运行环境,可以为python,java等等很多提供环境,资源消耗低。

  • 三、虚拟环境

更加迷你,专门针对于python,将项目依赖的环境隔离

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

负责业务对象与数据库(ORM) 的对象,和数据交互

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 install xx:安装xxx依赖包

三、测试模块包是否安装完成

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所在的文件夹目录
image.png
切记不能出错。
接着选择file中的settings

再选择 project interpreter中的小齿轮中的add

然后找到刚刚创建的环境中的bin文件中的bin中的python.exe文件添加

到此环境加载完成。

项目settings.py文件内容简介

base_dir


指的是调用项目时的绝对路径

SECET_KEY

密钥,上面的warning是提示密钥用于生产环境

四种环境

1. 开发环境

1. 测试环境

1. 演示环境(彩排)

1. 线上环境(生产环境)

ALLOWED_HOSTS[]

允许访问的主机ip,将允许的ip地址填入,所有人填["*"]

INSTALLED_APPS

内置的应用,都以django开头

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

django自带的密码验证器

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 进行表迁移
完成之后

点击刷新按钮,会更新出大量新表
这时再启动服务就没有提醒了。

Last modification:February 6th, 2020 at 04:04 pm
如果觉得我的文章对你有用,可以打赏一瓶汽水钱嗷~