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组成_基本响应与部署相关推荐

  1. 各种风格简洁单页响应式html5模板_简洁 响应式 单页 跳转 设计 案例 源码340多套订餐企业模板高大尚响应式网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响

    各种风格简洁单页响应式html5模板_简洁 响应式 单页 跳转 设计 案例 源码340多套订餐企业模板高大尚响应式网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响 ...

  2. mask rcnn算法分析_在modelarts上部署mask-rcnn模型

    最近老山完成了对mask-rcnn在modelarts上的部署,部署模型来自于这个项目.部署的过程大体和我的上篇文章使用modelarts部署bert命名实体识别模型相似,许多细节也不在赘述.这篇文章 ...

  3. 响应式网页设计代码_消除响应式网站建设设计中的缺陷

    在过去的5年里,移动流量的份额增长了20%,现在响应式网站设计已经被认为是理所当然的了.到2020年,您可以通过手机几乎可以访问任何网站,它会很好用.大多数用户如果看到一个网站在他们的智能手机或平板电 ...

  4. Lync Server 2010的部署系列_第七章 部署边缘服务器(上)

    一.配置边缘支持的内部DNS记录 1) 登录DC.Gianthard.com(192.168.1.11).在相应的 DNS 服务器上,依次单击"开始"."控制面板&quo ...

  5. pycharm python部署_使用PyCharm配合部署Python的Django框架的配置纪实

    安装软件安装 Python 2.7.PyCharm.pip(Python包管理工具).Django ( pip install Django) 部署PyCharm 新建Django工程 完成后,其目录 ...

  6. 统计twitter帖子_在Kubernetes上部署InfluxDB和Grafana以收集Twitter统计信息

    统计twitter帖子 Kubernetes是市场上容器编排的事实上的领导者,它是一种令人难以置信的可配置且功能强大的编排工具. 与许多强大的工具一样,一开始它可能会让人感到困惑. 本演练将介绍创建多 ...

  7. xshell部署web项目_前端轻量化部署脚手架实践

    背景 传统的前端代码手工部署流程如下: 手工部署流程 传统的手工部署需要经历: 1.打包,本地运行npm run build打包生成dist文件夹. 2.ssh连接服务器,切换路径到web对应目录下. ...

  8. vue 两个table 并排_从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(六)

    本文由图雀社区成员 Holy[1] 使用 Tuture[2] 实战教程写作工具 写作而成,欢迎加入图雀社区,一起创作精彩的免费技术实战教程,予力编程行业发展. 前面五篇教程我们已经基本实现了迷你全栈电 ...

  9. 计算机视觉 响应_视觉响应式布局的自动化测试

    计算机视觉 响应 Today it's all about testing. In 2015, many developers knows about TDD and I personally thi ...

最新文章

  1. R语言ggplot2可视化:ggplot2可视化时间序列数据并在末尾数据点添加数值标签(number label)
  2. Python从菜鸟到高手(2):清空Python控制台
  3. 使用汇编软件emu8086输出十次Hello World!
  4. 89600 matlab,是德KEYSIGHT N9000B CXA 信号分析仪,多点触控,9 kHz 至 26.5 GHz
  5. 币安Binance.client can‘t find the module client 解决办法
  6. linux 退后根目录,linux下半部与退后执行的工作
  7. C++程序员拼命工作却不顾身体,是不值得的!
  8. 深度学习笔记(38) 非极大值抑制
  9. TensorFlow 教程 --进阶指南--3.1总览
  10. 计算机应用技术基础教案,计算机应用技术基础实训教案.doc
  11. cookie与token对比(转)
  12. 中国首家干线物流联合创新中心成立,实施自动驾驶数据共享是否可行?...
  13. 关于Vue项目导入谷歌翻译api
  14. PDF目录的自动生成
  15. python+word+excel+ppt自动化办公教程_Python自动化办公之Word,全网最全看这一篇就够了...
  16. 使用DebenuPDFLibrary导出微信中的照片
  17. 基于ffmpeg+opencv的h264解码显示功能的实现
  18. python random模块随机抽样专题
  19. Canvas线条动画
  20. buuctf web1

热门文章

  1. android 11 移除桌面搜索栏
  2. 三维扫描仪可以做什么?
  3. 本地客户端(自己的电脑)连接远程Oracle数据库(服务器端),客户端安装步骤
  4. 图像处理之opencv库使用小结
  5. 径向基网络(RBF)实现函数插值(拟合)
  6. matlab BPSK调制方式代码实现
  7. 10秒钟脱口而出两位数的平方
  8. SRM 551 ColorfulCupcakesDivTwo
  9. 什么是创新,什么是发明
  10. RaspberryPi 3B 之初体验笔记(续一)