初识 Django(Python WEB 框架)

news2024/9/23 9:30:17

初识 Django(Python WEB 框架)

  • 参考
  • 描述
  • 优劣 Django(部分)
      • 优势
          • 功能完备,开箱即用
          • 开发效率高
          • Admin 管理后台
          • 安全
          • ORM
          • 可扩展
      • 劣势
          • 性能
          • 模板
          • 过渡封装
  • 获取
      • 长期支持版(Long Time Support,LTS)
      • PIP
      • 官网获取
      • 检测
  • MVC 与 MVT
      • MVC 架构
      • MTV 架构
  • 基本使用
      • 项目
          • django-admin.exe
          • 创建项目
          • 项目的目录结构(初始状态)
          • 运行
      • 应用
          • 创建应用
          • 注册应用

参考

项目描述
《Diango 实战:Python Web 典型模块与项目开发》张晓
Django 官方文档https://docs.djangoproject.com/zh-hans/4.1/
搜索引擎Bing

描述

项目描述
操作系统Windows 10 专业版
Django4.1.5

优劣 Django(部分)

优势

功能完备,开箱即用

Django 包含了 WEB 开发中所需要的大部分功能,并且 Django 还为开发者们提供了数十个可用于处理常见 Web 开发任务的额外功能。

开发效率高

你可以通过使用 Django 快速地将想法变成现实。毕竟人家用的是 Python 嘛。

Admin 管理后台

Django 提供了一个强大的 Django Admin 管理后台。Django Admin 管理后台在外观上虽谈不上优秀,但你可以通过 django-admin-bootstarp 插件对其进行美化。

安全

Django 非常重视安全性,并帮助开发人员避免许多常见的安全错误,例如 SQL 注入、跨站点脚本、跨站点请求伪造和点击劫持。

ORM

Django 使用 ORM(Object Relational Mapping,对象关系映射)来处理数据,这使得 Django 与其他开发语言或框架明显区分开来。请先记住它,这是 Django 中很重要的一部分。

可扩展

Django 包含许多功能强大的第三方插件,具有很强的扩展性。

劣势

性能

由于 Django 是使用 Python 开发的,性能上算不上强劲。

模板

Django 不允许模板中出现 Python 代码,这降低了使用 Django 开发的灵活性。

过渡封装

Django 相比其他开发框架显得有些重,包含了许多不必要的功能,没有 Flask 轻便。

获取

长期支持版(Long Time Support,LTS)

推荐安装 Django 的长期支持版,如需获取长期支持版的最新信息,请前往 官网 查看。
长期支持版

PIP

你可以使用 PIP(Package Installer For Python) 来安装 Django。

 pip install django -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

在使用 PIP 安装 Django 时,你可以使用 == 来指定需要安装的 Django 版本。下面的语句将指定安装 Django 4.1.5 。

pip install Django==4.1.5

官网获取

你可以前往 Django 官网 下载。
官网获取

在将压缩包文件解压后。在终端中使用 cd 命令切换工作目录到完全解压后的文件夹中(.tar.gz 类型的文件需要解压两次),使用如下命令对 Django 进行安装:

python setup.py install

检测

你可以通过允许如下 Python 代码来检测 Django 是否成功安装并查看 Django 的版本信息:

import django
print(django.get_version())

import django
print(django.__version__)

MVC 与 MVT

MVC 架构


所谓的 MVC(Model View Controller) 就是将 WEB 应用分为 Model(模型)、View(视图)及 Controller(控制器)三层。

其中:

  1. 模型代表数据存取层,它提供数据获取的接口,使模型从数据库中获取数据时,无需了解不同数据库取得数据的方式。模型通常为数据库提供了一层抽象的封装,这样无需修改代码即可使用不同的数据库。
  2. 视图代表界面,是模型的表现层,决定数据在应用中怎么显示。
  3. 控制器负责业务逻辑,通过程序逻辑判断需要从数据库中获取什么信息,以及把什么信息传递给视图。

该部分内容整理自 张晓先生《Diango 实战:Python Web 典型模块与项目开发》


MVC 工作时,大致的流程图:

MVC 工作流程图

MTV 架构

Django 遵循 MTV(Model Template View) 架构,MTV 与 MVC 十分相似,两者存在的区别我暂时无法说清楚,如果有知道的朋友还望不吝赐教。

其中:

  1. MTV 中的 Template 相当于 MVC 中的 View。
  2. MTV 中的 View 相当于 MVC 中的 Controller。

MTV 工作时,大致的流程图:

MVT 工作流程

基本使用

项目

django-admin.exe

在安装 Django 后,在 Python 的安装目录下的 Scripts 文件夹中存在程序 django-admin.exe,请记住 Scripts 文件夹所在的路径,创建项目时需要使用到 django-admin.exe 程序。

创建项目

进入终端后使用 cd 命令切换工作目录至你期望创建项目的文件夹下,使用如下命令进行项目的创建:

xxx\Python\Python38\Scripts\django-admin startproject MyProject

执行该命令后,我们就成功创建了一个 Django 项目(MyProject)。

注:
请将上述命令中的 xxx\Python\Python38\Scripts\ 修改为正确的路径。

项目的目录结构(初始状态)
MyProject
    ├── manage.py
    └── MyProject
        ├── asgi.py
        ├── __init__.py
        ├── settings.py
        ├── urls.py
        └── wsgi.py

其中:

  1. __init__.py
    __init__.py 文件用于声明当前文件夹为一个模块。
  2. settings.py
    Django 中的配置文件。
  3. urls.py
    urls.py 是进行 URL 配置的文件,用于建立 URL 表达式与视图函数间的对应关系。urls.py 文件建立了一种 访问网址即调用函数 的机制。
运行

使用如下命令可以观察项目的运行效果(使用该命令前,需要使用 cd 命令切换工作目录至 manage.py 文件所在的文件夹中):

python manage.py runserver

运行结果:

运行结果
运行结果提示我们可以通过访问网址 http://127.0.0.1:8000/ 来对项目进行访问。
在访问 http://127.0.0.1:8000/ 后,你将观察到如下页面(类似):

运行结果

应用

创建应用

我们可以通过项目文件目录下的 manage.py 来创建应用。使用如下命令创建应用(使用该命令前,需要使用 cd 命令切换工作目录至 manage.py 文件所在的文件夹中):

python manage.py startapp myapp

在创建应用后,项目的目录结构如下:

MyProject
    ├── db.sqlite3
    ├── manage.py
    ├── myapp
    │   ├── admin.py
    │   ├── apps.py
    │   ├── __init__.py
    │   ├── migrations
    │   │   └── __init__.py
    │   ├── models.py
    │   ├── tests.py
    │   └── views.py
    └── MyProject
        ├── asgi.py
        ├── __init__.py
        ├── __pycache__
        │   ├── __init__.cpython-38.pyc
        │   ├── settings.cpython-38.pyc
        │   ├── urls.cpython-38.pyc
        │   └── wsgi.cpython-38.pyc
        ├── settings.py
        ├── urls.py
        └── wsgi.py

其中:

  1. admin.py
    Django Admin 后台的配置文件。
  2. apps.py
    当前应用的配置文件。
  3. models.py
    用于保存数据库模型。
  4. tests.py
    你可以在该文件中编写测试代码用于对当前应用进行测试。
  5. views.py
    用于存放与业务逻辑相关的代码。
注册应用

首先,打开项目文件中的 settings.py 文件,你可以在该文件中观察到如下代码:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

将这段代码修改为以下内容即可完成应用的注册:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp'   # 此处填写你创建的应用的名称
]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/171569.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Java+SpringBoot+Vue企业资源规划系统设计与实现

博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战✌ 博主作品:《微服务实战》专栏是本人的实战经验总结,《Spring家族及…

开源项目介绍

文章目录简介经验casdoorkeycloaklatexopenMP简介 不经常见的开源项目,第一次接触。 经验 如果是已经开源的软件,使用起来非常的平稳,问题也少。原因是已经经过了多年的历练,已经稳当下来,该发现的问题已经解决的差…

unplugin-vue-components 不能识别组件的自动导入的类型 (pnpm)

引言 unplugin-vue-components 是一款能帮助组件自动导入的库&#xff0c;简单点的说&#xff0c;你不需要使用import xx from xxx.vue 这行语句也能实现导入的效果。 <script setup lang"ts"> import ScreenAdpter from compontents/ScreenAdpter/index.vue i…

[前端笔记——多媒体与嵌入] 6.HTML 中的图片+视频+音频内容

[前端笔记——HTML介绍] 6.HTML 中的图片1.HTML中的图片1.1怎样将一幅图片放到网页上&#xff1f;1.2备选文本1.3宽度和高度1.4.Image titles 图片标题1.5通过为图片搭配说明文字的方式来解说图片1.6CSS背景图片2.视频和音频内容2.1Web中的视频和音频2.1.1<video>元素2.1…

在linux中部署SpringBoot+Vue前后端分离应用

最近有任务需求&#xff0c;自己在linux中通过docker虚拟环境的方式部署了SpringBoot和Vue前后端分离的项目&#xff0c;现在做点总结&#xff0c;给需要的小伙伴分享。不足之处多多指正。关于在linux中安装docker&#xff0c;可以查看博主前几篇博客按照步骤进行安装&#xff…

【JUC系列】ReentrantLock实现本地锁的源码分析

使用场景 public class ReentrantLockTest {private static ReentrantLock lock new ReentrantLock();public static void main(String[] args) {new Thread(()->{lock.lock();// do somethingSystem.out.println("111");try {Thread.sleep(Integer.MAX_VALUE);…

[ 华为云 ] 云计算中Region、VPC、AZ 是什么,他们又是什么关系,应该如何抉择

前几天看到一个问答帖&#xff0c;我回答完了才发现这个帖子居然是去年的也没人回复&#xff0c;其中他问了一些华为云的问题&#xff0c;对于其中的一些概念&#xff0c;这里来总结讲解一下&#xff0c;希望对学习华为云的小伙伴有所帮助。 文章目录区域&#xff08;Region&am…

致 Tapdata 开源贡献者:聊聊 2022 年的进展和新一年的共建计划

岁末年初&#xff0c;在开源领域刚埋下一颗生机勃勃的种子的 Tapdata&#xff0c;想和正在关注我们的开发者&#xff0c;聊聊这一年的进展和新一年的共建计划。 2022年4月&#xff0c;Tapdata 宣布开源 PDK&#xff08;Plugin Development Kit&#xff09;&#xff0c;将自身的…

前端js实现文件多次添加累加上传和选择删除(django+js)- 添加累加文件上传 (一)

前言 原本的多文件上传功能在选择文件时&#xff0c;只能通过同一范围的鼠标框选或者ctrl/shift多选取选择文件&#xff0c;这样选择文件很不灵活&#xff0c;而且在确定之后如果漏选了文件&#xff0c;再次点击上传按钮时会清空表单里的文件信息&#xff0c;只能重复之前的操…

数据库mysql调优

问题描述: mysql dba在mysql服务端启用了连接在空闲一定时间 (10分钟) 后&#xff0c;就自动关闭连接(连接失效)的功能&#xff0c;导致java端连接池在空闲一段时间后&#xff0c;连接被自动关闭(自动失效)。为了避免这种情况出现&#xff0c;可以在dbcp上配置空闲的时候检测连…

PCI、PCI-X、PCI-E、PCI-E Card、Mini PCI-E、M.2、Add-in Card 它们有啥区别?这些概念你搞清楚了吗?

搞硬件或通信的“攻城狮”们&#xff0c;免不了要和各种通信协议及接口打交道。比如&#xff0c;我们经常接触PCI、PCI-X、PCI-E、PCI-E Card、Mini PCI-E、M.2(NGFF)、Add-in Card这些概念&#xff0c;作为“攻城狮”队伍中的一员&#xff0c;你搞清楚它们之间的关系了吗&…

Python爬虫教你爬取csdn作者排行榜

(一)两种爬取方式介绍 1.自动化测试工具 安装好驱动(以前的selenium文章有教程),然后进行元素定位&#xff0c;最后数据提取&#xff0c;用xls表格进行持久化存储 2.requests库 利用基本方法发起请求&#xff0c;获得json数据进行持久化存储 本篇文章先讲解第二种&#xf…

洛谷——树与图dp与状压dp

文章目录[NOIP1996 提高组] 挖地雷题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路代码最大食物链计数题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路代码[ZJOI2006]三色二叉树题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #…

浅说 INSERT/块参照/BlockReference

在AutoCAD中使用INSERT命令插入一个块时&#xff0c;生成块参照实体&#xff0c;也叫INSERT实体&#xff0c;在ObjectARX中&#xff0c;对应类AcDbBlockReference。反正就这么一个东西&#xff0c;名儿还挺多&#xff0c;我家乡有句话叫“二嫚她婆婆俩名”&#xff0c;莫非这是…

数据结构(5) treap

活动 - AcWing 参考—《算法竞赛进阶指南》-lyd 目录 一、概述 二、具体操作详解 1.常见操作 2.结构定义 3.操作基础函数 &#xff08;1&#xff09;pushup &#xff08;2&#xff09; 获得一个新节点 &#xff08;3&#xff09;左旋右旋 &#xff08;4&#xff09;建…

centos上面用docker 安装nacos 1.4.1

方式一&#xff1a; 下载nacos本地文件 1. 去官网下载GitHub - alibaba/nacos: an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.2.上传到Linux服务器中cd /usr/uploadtar -zxvf nacos-serv…

二、QML工程之初始工程代码分析

接着上一讲&#xff0c;当建立完工程之后&#xff0c;IDE 会呈现如下的界面下面的代码是main.cpp&#xff0c;工程起始运行的代码段&#xff0c;具体的函数说明都在代码段里面进行了标注。#include <QGuiApplication> //主要是ui进程运行头函数&#xff0c;包含事件循环&…

【云原生】k8s图形化管理工具之rancher

内容预知 前言 1. Rancher的相关知识 1.1 Rancher的简介 1.2 Rancher与k8s的关系及区别 1.3 Rancher具有的优势 2. Rancher的安装部署 2.1 实验环境与部署图分配 2.2 具体的部署操作 &#xff08;1&#xff09;在 rancher 节点下载 rancher 镜像 &#xff08;2&#xff…

【Spring(七)】详细了解Spring的核心容器

文章目录前言容器总结前言 前面我们完成bean以及依赖注入的相关学习&#xff0c;现在我们进入到核心容器的最后一块内容了&#xff0c;也就是与容器相关操作的学习&#x1f388;&#x1f388;。 容器 前边我们获取容器是这样获取的&#x1f447;&#x1f447;。 这只是获取容器…

Vue CLI脚手架

1、Vue的开发模式 目前我们使用vue的过程都是在html文件中&#xff0c;通过template编写自己的模板、脚本逻辑、样式等。 但是随着项目越来越复杂&#xff0c;我们会采用组件化的方式来进行开发&#xff1a; 这就意味着每个组件都会有自己的模板、脚本逻辑、样式等&#xff…