【Python】Django Web 框架

一、常用的Web开发框架

1.Django

Django是一个由Python写成的开放源代码的Web应用框架。这套框架的主要目标是使开发复杂、数据库驱动的网站变得简单。Django注重组件的重用性和"可拔插性"、敏捷开发和DRY(Don't Repeat Yourself)法则

2.Flask

Flask是一个微型的Python开发的Web框架,同时也被称为"microframework",它主要面向需求简单,项目周期短的Web小应用。

3.Meteor

Meteor是一种新型的JavaScript框架,用于WebAPP应用程序开发。

4.Laravel

Laravel是一个简单优雅的PHPWeb开发框架,允许开发者通过简单,高雅,表达式语法开发出很棒的Web应用,将开发者从"意大利面条式代码"中解放出来。在功能上具有语法表现力更丰富、高质量的文档、丰富的扩展包。

5.Tornado

Tornado龙卷风是一个开源的网络服务器框架,旨在解决C10K问题,它是基于社交聚合网站FriendFeed的实时信息服务开发而来的。

二、Django流程介绍

1.Django的MVC模式

Model(模式):表示应用程序的核心(如数据库记录列表)

View(视图):显示数据

Controller(控制器):处理输出

MVC模式具有生命周期低,部署快,可维护性高等优点。

2.Django的MTV模式

Model(模式):负责业务对象与数据库对象

Template(模板):负责如何把页面展示给用户

View(视图):负责业务逻辑,并在适当的时候调用Model和Template

三、安装Django框架

在Windows操作系统下安装Django的步骤如下:

Django的下载地址:https://www.djangoproject.com/download/

(1)下载Django压缩包,解压并和python的安装目录放在同一个根目录。

(2)进入Django目录,执行python.setup.py install,然后开始安装。

(3)Django将要安装到Python的Lib下site-packbag下。

(4)然后配置环境变量。

(5)添加完成之后就可以使用Django的命令新建工程了。

四、路由

1.URL(路由)的概念

URL是Web服务的路口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应。

2.Django处理请求

加载该模块并且寻找可用的urlpatterns。

依次匹配每个URL模式,在与请求的URL相配的第一个模式停下来。也就是说,url匹配说从下往上的短路操作,所以url在列表中的位置非常关键。

导入并且调用匹配行中给定的视图,该视图是一个简单的python函数,或者基于类的函数。视图将获得如下参数:

(1)一个HttpRequst实例。

(2)如果匹配的正则表达式返回了没有命名的组,那么正则表达式匹配的内容将作为位置参数提供视图。

(3)关键字参数由正则表达式匹配的命名组组成,但是可以被django.conf.urls.url()的可选参数kwargs覆盖。

3.表单

Django的From表单类与Django模型描述对象的逻辑结构、行为以及它呈现给我们内容的形式方式大致相同。

4.视图

视图的本质就是一个Python中的函数,作用是接收web请求并且响应Web请求。

五、Django模板

模板是一个文本,用于分离文档的表现形式和内容。模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签)

模板包含两部分:

(1)静态部分,包含html、css、js。

(2)动态部分,即模板语言

Django处理模板分为两个阶段:

(1)加载:根据给定的路径找到模板文件,编译后反正该内存中。

(2)渲染:使用上下文数据对模板插值并返回生成的字符串。

Django模板的过滤器非常实用,用来返回的变量值做一些特殊处理,常用的过滤器,如下表所示:【取一部分】

|------------------------------|------------|
| 过滤器 | 作用 |
| {{value|lower}} | 将变量全部转换成小写 |
| {{value|upper}} | 将变量全部转换成大写 |
| {{value|default:"nothing"}} | 变量设置默认值 |

相关推荐
留不住丨晚霞1 分钟前
说说SpringBoot常用的注解?
java·开发语言
大模型真好玩4 分钟前
准确率飙升!GraphRAG如何利用知识图谱提升RAG答案质量(额外篇)——大规模文本数据下GraphRAG实战
人工智能·python·mcp
19895 分钟前
【零基础学AI】第30讲:生成对抗网络(GAN)实战 - 手写数字生成
人工智能·python·深度学习·神经网络·机器学习·生成对抗网络·近邻算法
hardStudy_h11 分钟前
C++——内联函数与Lambda表达式
开发语言·jvm·c++
applebomb15 分钟前
没合适的组合wheel包,就自行编译flash_attn吧
python·ubuntu·attention·flash
艾莉丝努力练剑38 分钟前
【C语言】学习过程教训与经验杂谈:思想准备、知识回顾(三)
c语言·开发语言·数据结构·学习·算法
Chasing__Dreams1 小时前
python--杂识--18.1--pandas数据插入sqlite并进行查询
python·sqlite·pandas
彭泽布衣2 小时前
python2.7/lib-dynload/_ssl.so: undefined symbol: sk_pop_free
python·sk_pop_free
witton2 小时前
Go语言网络游戏服务器模块化编程
服务器·开发语言·游戏·golang·origin·模块化·耦合
喜欢吃豆2 小时前
从零构建MCP服务器:FastMCP实战指南
运维·服务器·人工智能·python·大模型·mcp