初识 Django

news2024/12/26 0:57:18

初识 Django

  • 参考
  • 描述
  • 优劣 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/170889.html

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

相关文章

力扣sql基础篇(十一)

力扣sql基础篇(十一) 1 每件商品的最新订单 1.1 题目内容 1.1.1 基本题目信息1 1.1.2 基本题目信息2 1.1.3 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 SELECT p.product_name,o1.product_id,o1.order_id,o1.order_date FROM Orders o1 INNER JOIN ( SELECT pro…

Android自定义绘制1-1 Plus

上一个文章是看着扔物线的视频写的。写玩之后,发现他的文章还有很多内容。尴尬。 接着写呗。 自定义绘制知识的4个级别 1.Canvas的drawXXX()系列方法以及Paint类的一些常见方法。 canvas的drawXXX()是自定义绘制的最基本操作。掌握了这些方法,才知道…

JNPF 3.4.5 java+.Net6 旗舰版企业版 简搭-敏捷业务低代码开发平台

JNPF 低代码通常是指APaaS产品,通过为开发者提供可视化的应用开发环境,降低或去除应用开发对原生代码编写的需求量,进而实现便捷构建应用程序的一种解决方案。广义上低代码概念涵盖所有能够完成代码的集成,减少代码开发的应用过程…

在哔站黑马程序员学习Spring—Spring Framework—(二)spring的注解开发学习笔记

一、注解开发spring的强项—>简化开发spring从2.0开始逐步提供了各种各样的注解,到了2.5注解比较完善,到了3.0推出了纯注解开发,使用java类替代配置文件,开启了spring快速开发通道。二、注解开发定义bean不再需要在spring配置文件中定义be…

拷贝实体的工具类---BeanObjectCopyUtils

目录 前言: 第一步:引用的核心类: 第一种:单个实体的拷贝方法 第二种:列表类的实体拷贝方法 第二步:核心方法的介绍: 核心方法一,介绍了实例化的操作: 核心方法二…

CMMI之项目管理类

项目管理类过程域涵盖了与项目的计划、监督和控制相关的项目管理活动。CMMI-DEV 中的七个项目管理类过程域是:• 集成项目管理(Integrated Project Management, IPM)• 项目监督与控制(Project Monitoring and Control…

蓝桥杯:城邦

题目链接 问题描述 答案提交 本题答案是:4046。 运行限制 思路分析 代码(Java) 问题描述 小蓝国是一个水上王国, 有 2021 个城邦, 依次编号 1 到 2021。在任意两 个城邦之间, 都有一座桥直接连接。 为了庆祝小蓝国的传统节日, 小蓝国政府…

登录授权方案:JSON Web Tokens (JWT)

登录授权方案:JSON Web Tokens (JWT) JWT官方文档:https://jwt.io/introduction 1.简介: JWT 即 json web tokens,通过JSON形式作为Web应用中的令牌,用于在各方之间安全地将信息作为JSON对象传输,在数据传…

【博客598】从netfilter hook执行原理分析iptables为什么自定义链无法主动调用只能从其它链跳转过来

从netfilter hook执行原理分析iptables为什么自定义链无法主动调用只能从其它链跳转过来 1、netfilter hook执行原理 netfilter 框架是 Linux 网络子系统里的一个核心模块,iptables 就是基于 netfilter 框架实现的一个网络包处理工具。 netfilter hook被调用后执行…

2023年“科学探索奖”申报启动及指南

2023年“科学探索奖”资助不超过50位青年科学家,每位获奖人5年内将获得总计300万元奖金。今年的申报时间为2023年1月1日至3月15日。获奖名单拟定于2023年8月揭晓。本文知识人网小编整理该奖项的概要及申报指南,以飨读者。“科学探索奖”是一项由科学家主…

【高并发内存池】第二弹之threadcache 线程缓存

1.为什么线程向threadcache申请内存不需要加锁? 因为没有把cache设置成全局变量,而是使用了TLS(线程局部存储),作用是当前内存只可当前线程见到,其他线程没有使用权,避免了加锁的操作,保证了线程数据的独立…

基于paddlex图像分类模型训练(一):图像分类数据集切分:文件夹转化为imagenet训练格式

背景 在使用paddlex GUI训练图像分类时,内部自动对导入的分类文件夹进行细分,本文主要介绍其图像分类数据切分源码,或可作为其他项目储备代码:https://github.com/PaddlePaddle/PaddleX/blob/develop/paddlex/tools/dataset_spli…

[Linux]进程概念以及进程状态

🥁作者: 华丞臧. 📕​​​​专栏:【LINUX】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉 LeetCode刷题网站 文…

vs2019 + qt5.12.11 打包

目录 你以为打包方式 实际要添加步骤 你以为打包方式 先吐槽一番,感觉vsqt打包有点巨坑,还是说我第一次打包其实都是这样子的 首先我们将生成的.exe弄到一个打包文件夹里面 然后嘞 我用qt自带的打包工具windeployqt exe (因为我的再C盘下…

Mysql基础篇(11)—— MySQL8.0新特性之窗口函数

举例1 假设我现在有这样一个数据表,它显示了某购物网站在每个城市每个区的销售额: CREATE TABLE sales( id INT PRIMARY KEY AUTO_INCREMENT, city VARCHAR(15), county VARCHAR(15), sales_value DECIMAL ); INSERT INTO sales(city,county,sales_val…

【xgboost】XGBoost

XGBoost1. 原理改进及特点1.1 遵循Boosting算法的基本建模流程1.2 平衡精确性与复杂度1.3 降低模型复杂度、提升运行效率1.4 保留部份GBDT属性2. sklearn接口(回归)2.1 导库 & 数据2.2 sklearn api普通训练2.3 sklearn api交叉验证2.4 查看属性接口3. xgboost原生代码(回归…

Redis数据持久化方案

作为集中式缓存的优秀代表,Redis可以帮助我们在项目中完成很多特定的功能。Redis准确的说是一个非关系型数据库,但是由于其超高的并发处理性能,及其对于缓存场景所提供的一系列能力构建,使其成为了分布式系统中的集中缓存的绝佳选…

深入学习Vue.js(十)异步组件和函数式组件

文章目录异步组件需要解决的问题异步组件实现原理1.封装defineAsyncComponent函数2.超时与error3.延迟和Loading组件函数式组件异步组件需要解决的问题 允许用户指定加载出错时要渲染的组件允许用户指定Loading组件,以及展示该组件的延迟时间允许用户设置加载组件的…

8. R语言绘图系统介绍、高级绘图与低级绘图、【绘图参数】、绘图函数包

b站课程视频链接: https://www.bilibili.com/video/BV19x411X7C6?p1 腾讯课堂(最新,但是要花钱,我花99😢😢元买了,感觉讲的没问题,就是知识点结构有点乱,有点废话)&…

筑基一层 —— 高质量C编程建议、详解猜数字游戏

目录 一.修炼必备 二.高质量C编程 2.1 高质量C编程的思维导图(需要思维导图的加qq:972606225获取) 2.2 文件结构 2.3 程序的形式 2.4 命名规则 三.猜数字游戏详解 一.修炼必备 1.入门必备:VS2019社区版,下载地址:Visual S…