Django_Django组成_基本响应与部署
Django框架 day01
<20210202>
- 特点
1.只关注用户要求的业务功能,业务逻辑
2.框架自带面向对象的属性,框架设计就是为了灵活和低耦合
3.站在巨人的肩膀上开发
- 技术特征
1.python编写 全开源
2.MTV框架
3.最早使用于CMS(内容管理器) 05年7月 最新版本3.x
1.Django组成
1.1基本配置 settings.py
项目开发的灵活性
1.2 路由系统 urls.py
必备模块,地址栏的网址,请求发送到服务之前需要配置路由,并最终找到某个视图函数去处理。
1.3 模板系统 Templates
模板对应目录,提供.html页面文件,显示和渲染数据。其属于动态页面,模板中存在很多变量,能够展示数据的动态变化。
当项目没有前后端分离的时候,其属于必备模块。否则需要使用 单端的前端项目进行分离。
1.4 视图 views.py
必备模块,在Django中通过视图类和视图函数来实现业务逻辑,大部分编码是写在视图模块中的。
1.5 模型 models.py
必备模块,数据库操作,通过orm技术去访问和操作数据库。
1.6 其他
中间件,数据库后台管理系统admin
2.cMTV与MVC 架构
2.1 MVC
c 接收请求,并且分配任务,负责组织协调
m 处理具体的业务逻辑,数据库访问,工作比重最大
v 数据渲染和显示
厚model ,薄controller
2.2 cMTV
c-url 分配任务 <薄controller的实践>
view 处理具体的业务逻辑
model 通过orm访问数据库
template模板 数据显示和渲染
2.3 其他
信息管理系统架构
ui用户界面 bbl业务逻辑层 dal数据访问层
- 区别
cMTV 与MVC架构,cMTV做了更加细致的划分,主要区别在于将c路由层单独抽象出来,业务逻辑交给View层。而MVC架构业务逻辑在M层,C负责分配任务。
3.开始Django
3.1 启动!
# cd到一个目录下 建立Django项目
django-admin startproject [name]
# 启动服务 默认127.0.0.1:8000
python3 manage.py runserver IP PORT
浏览器输入127.0.0.1:8000 即可看到目前的启动页面,小火箭!此事基于Django的服务器就已经准备就绪了。
3.2了解她!
项目的配置文件 settings.py
https://docs.djangoproject.com/en/2.2/ref/settings/
1. `BASE_DIR`- 用于绑定当前项目的绝对路径(动态计算出来的), 所有文件都可以依懒此路径2. `DEBUG`1. True `调试模式`(用于开发中)2. False `生产模式`(不启用调试)3. `ALLOWED_HOSTS`- 设置允许访问到本项目的host请求头的值- 如果要在局域网其它主机也能访问此主机,启动方式应使用如下模式:`python3 manage.py runserver 0.0.0.0:5000`
# 指定网络设备如果内网环境下其他主机想正常访问该站点,需加`ALLOWED_HOSTS = ['内网ip'] 4. `INSTALLED_APPS` - 指定当前项目中安装的应用列表5. `MIDDLEWARE` - 用于注册中间件6. `TEMPLATES` - 用于指定模板的配置信息7. `DATABASES`- 用于指定数据库的配置信息8. `LANGUAGE_CODE`- 用于指定语言配置- 取值:- 英文 : `"en-us"`- 中文 : `"zh-Hans"`9. `TIME_ZONE`- 用于指定当前服务器端时区- 取值:- 世界标准时间: `"UTC"`- 中国时区 : `"Asia/Shanghai"`10. `ROOT_URLCONF`- 用于配置根级 url 位置 - `ROOT_URLCONF = 'mysite1.urls'`> 注: 此模块可以通过 `from django.conf import settings` 导入和使用
3.3 你有什么需求呢!
如何处理一个URL对应的请求
3.3.1 告诉我你的URL!
URL的一般语法格式为:
protocol :// hostname[:port] / path [?query][#fragment]protocol: 协议 https密文传输//hostname 主机,服务器 :port http默认80 /path 路由地址 ?query 查询字符串 #fragment 锚点
假设构建了一个路由地址为
http://127.0.0.1:8000/page/2003/
如何让Django响应他呢?
3.3.2 配置路由urls.py
- path(route, views, name=None)
当用户访问的地址是route 时,将其提交给views模块中的某个函数做处理。
name: 为地址起别名,在模板中地址反向解析时使用
#在该字典内添加 需要导入views.py模块
urlpatterns = {path('page/2003/',views.page_01),}
3.3.1 配置(新建) views.py
from django.http import HttpResponse
import math
# 视图函数 ,负责业务逻辑
# (必填)接收客户端浏览器的http请求传入requset,并返回http响应HttpResponse
# 请求和返回格式
def page_01(request):return HttpResponse('<h1>hello Django!!!<h1>')
3.3.2大功告成!
这样当你再去访问http://127.0.0.1:8000/page/2003/
就会获得一行css样式为一级标题的’hello Django!!!’
3.4更高级的响应
3.4.1 path转换器
语法: <转换器类型: 自定义名>
作用:若转换器类型匹配到对应类型的数据,则将数据按照关键字传参的方式传递给视图函数
转换器 | 效果 | 案例 |
---|---|---|
str |
匹配除了 '/' 之外的非空字符串
|
"v1/users/<str:username>"匹配 /v1/users/guoxiaonao |
int | 匹配0或任何正整数。返回一个 int | “page/<int:page>” 匹配 /page/100 |
slug | 匹配任意由 ASCII 字母或数字以及连字符和下划线组成的短标签 | “detail/<slug:sl>” 匹配 /detail/this-is-django |
path |
匹配非空字段,包括路径分隔符 '/'
|
"v1/users/<path:ph>"匹配 /v1/goods/a/b/c |
3.4.2 re_path()函数
语法:
re_path(reg, view, name=xxx)
正则表达式为命名分组模式
(?P<name>pattern)
;
匹配提取参数后用关键字传参方式传递给视图函数#匹配url中route以/划分开的内容 r'^(?P<name1>pattern1)/(?P<nam2>pattern2)/(?P<name3>pattern3)/$'
示例:
路由配置文件
# file : <项目同名文件夹>/urls.py # 以下示例匹配 # 可匹配 http://127.0.0.1:8000/20/mul/40 # 不可匹配 http://127.0.0.1:8000/200/mul/400 urlpatterns = {path('admin/', admin.site.urls),re_path(r'^(?P<x>\d{1,2})/(?P<op>\w+)/(?P<y>\d{1,2})/$',views.cal_view),}
Django_Django组成_基本响应与部署相关推荐
- 各种风格简洁单页响应式html5模板_简洁 响应式 单页 跳转 设计 案例 源码340多套订餐企业模板高大尚响应式网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响
各种风格简洁单页响应式html5模板_简洁 响应式 单页 跳转 设计 案例 源码340多套订餐企业模板高大尚响应式网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响 ...
- mask rcnn算法分析_在modelarts上部署mask-rcnn模型
最近老山完成了对mask-rcnn在modelarts上的部署,部署模型来自于这个项目.部署的过程大体和我的上篇文章使用modelarts部署bert命名实体识别模型相似,许多细节也不在赘述.这篇文章 ...
- 响应式网页设计代码_消除响应式网站建设设计中的缺陷
在过去的5年里,移动流量的份额增长了20%,现在响应式网站设计已经被认为是理所当然的了.到2020年,您可以通过手机几乎可以访问任何网站,它会很好用.大多数用户如果看到一个网站在他们的智能手机或平板电 ...
- Lync Server 2010的部署系列_第七章 部署边缘服务器(上)
一.配置边缘支持的内部DNS记录 1) 登录DC.Gianthard.com(192.168.1.11).在相应的 DNS 服务器上,依次单击"开始"."控制面板&quo ...
- pycharm python部署_使用PyCharm配合部署Python的Django框架的配置纪实
安装软件安装 Python 2.7.PyCharm.pip(Python包管理工具).Django ( pip install Django) 部署PyCharm 新建Django工程 完成后,其目录 ...
- 统计twitter帖子_在Kubernetes上部署InfluxDB和Grafana以收集Twitter统计信息
统计twitter帖子 Kubernetes是市场上容器编排的事实上的领导者,它是一种令人难以置信的可配置且功能强大的编排工具. 与许多强大的工具一样,一开始它可能会让人感到困惑. 本演练将介绍创建多 ...
- xshell部署web项目_前端轻量化部署脚手架实践
背景 传统的前端代码手工部署流程如下: 手工部署流程 传统的手工部署需要经历: 1.打包,本地运行npm run build打包生成dist文件夹. 2.ssh连接服务器,切换路径到web对应目录下. ...
- vue 两个table 并排_从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(六)
本文由图雀社区成员 Holy[1] 使用 Tuture[2] 实战教程写作工具 写作而成,欢迎加入图雀社区,一起创作精彩的免费技术实战教程,予力编程行业发展. 前面五篇教程我们已经基本实现了迷你全栈电 ...
- 计算机视觉 响应_视觉响应式布局的自动化测试
计算机视觉 响应 Today it's all about testing. In 2015, many developers knows about TDD and I personally thi ...
最新文章
- R语言ggplot2可视化:ggplot2可视化时间序列数据并在末尾数据点添加数值标签(number label)
- Python从菜鸟到高手(2):清空Python控制台
- 使用汇编软件emu8086输出十次Hello World!
- 89600 matlab,是德KEYSIGHT N9000B CXA 信号分析仪,多点触控,9 kHz 至 26.5 GHz
- 币安Binance.client can‘t find the module client 解决办法
- linux 退后根目录,linux下半部与退后执行的工作
- C++程序员拼命工作却不顾身体,是不值得的!
- 深度学习笔记(38) 非极大值抑制
- TensorFlow 教程 --进阶指南--3.1总览
- 计算机应用技术基础教案,计算机应用技术基础实训教案.doc
- cookie与token对比(转)
- 中国首家干线物流联合创新中心成立,实施自动驾驶数据共享是否可行?...
- 关于Vue项目导入谷歌翻译api
- PDF目录的自动生成
- python+word+excel+ppt自动化办公教程_Python自动化办公之Word,全网最全看这一篇就够了...
- 使用DebenuPDFLibrary导出微信中的照片
- 基于ffmpeg+opencv的h264解码显示功能的实现
- python random模块随机抽样专题
- Canvas线条动画
- buuctf web1