[Python学习系列] 走进Django框架

news2025/1/13 13:40:16

文章目录

      • 1. 安装django
      • 2. 创建项目(命令的方式)
          • 在第一次创建django项目需要做的:
          • 每一次创建django项目需要做的:
      • 3. 创建app
      • 4. 启动运行django项目程序
      • 5. 模板&静态文件的存放地址
      • 6. django中的模板语法
      • 7. django中常见的请求和响应
      • 8. 连接MySQL数据库
      • 9. 使用ORM框架操作数据库
      • 10. 总结

1. 安装django

        在Pycharm终端处输入命令:pip install django ,回车。

2. 创建项目(命令的方式)

在第一次创建django项目需要做的:
  • 找到安装Python的路径下的Script文件夹,并复制到这个文件夹下的路径。eg:D:\Program Files\Python\Scripts (这个是本人主机安装Python的路径)。
  • 在系统变量Path中配置环境变量,粘贴上面复制的路径,点击确定。
    请添加图片描述
每一次创建django项目需要做的:
  • 管理员模式打开cmd。
  • 使用cd命令定位到要保存项目的文件夹。eg:cd py_code\PycharmProjects
  • 输入django-admin startproject 创建项目名称 的格式就可以创建出django项目。eg: django-admin startproject mysite

3. 创建app

        在pycharm终端进行添加app(功能模块),输入格式:python manage.py startapp app名称。eg:python manage.py startapp app01

4. 启动运行django项目程序

        在settings.py中注册app,在配置文件中添加来自apps.py的类。

请添加图片描述
请添加图片描述

​        在urls.py中注释掉原来的path并编写新的url和视图函数的对应关系。

请添加图片描述

        在views.py中简单编写一个视图函数。(注意:request是一个对象,封装了用户发送过来的所有请求相关数据)

请添加图片描述

        在manage.py右键启动django项目,并在Paramrters中设置输入runserver。

请添加图片描述

请添加图片描述

请添加图片描述

        以后再需要启动的话,再这里进行点击即可。

请添加图片描述

最后在刚才设置的url地址下能访问网页,则说明启动django项目成功。

请添加图片描述

5. 模板&静态文件的存放地址

模板其实就相当于是前段页面(一个.html文件)。

        在视图函数中使用render返回模板。新建一个templates文件夹,里面存的东西都是模板。(注意:查找模板的规则见下图注释)

请添加图片描述

静态文件其实就包括css、js、image、plugins等。

        在这里以图片为例(其他的也都是类似的)。

请添加图片描述

6. django中的模板语法

        django与Java那边的SpringBoot是完全不一样的,SpringBoot在开发中讲究的是前后端分离,但是django这边不是为前后端分离设计的,所以前后端代码的耦合度更高,比较适合于个人的独立开发,所以django进而就存在了模板语法这种东西。

        而模板语法,本质上就是在html中写一些占位符,由后端传来的数据对这些占位符进行替换和处理操作。

        这里会以一个简单的例子来演示一下模板语法的使用(以及附带一个django项目的执行流程),更多的模板语法还是需要查阅一下资料的,但是最常用的无非就是for来循环以及if来判断。

  • 步骤一:在urls.py中添加path路径。
    请添加图片描述

  • 步骤二:在views.py中添加视图函数,构造并传递数据给模板。
    请添加图片描述

  • 步骤三:在模板接收数据并组织显示到页面。
    请添加图片描述

        django项目整体的执行流程:

请添加图片描述

        这里给出上面代码中发送请求接收数据的地址:http://www.chinaunicom.com/api/article/NewsByIndex/2/2022/12/news。如果访问不了需要进行ua伪装,下面给出代码:

	header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4208.400'
    }

7. django中常见的请求和响应

        这一部分简单介绍django中的三种常见的请求以及三种常见的响应,其他额外内容需要用到的话可以自行查阅资料。

三种常见的请求:

  • 第一种:获取请求的方式:GET/POST(request.method)。
  • 第二种:在url上传递值(request.GET)。
  • 第三种:在请求体中提交数据(request.POST)。
    请添加图片描述
    请添加图片描述

三种常见的响应:

  • 第一种:直接将响应字符串内容返回给请求者。
  • 第二种:读取模板/html内容+渲染再返回给请求者。
  • 第三种:返回重定向结果给请求者。
    请添加图片描述

8. 连接MySQL数据库

        在接触Django框架之前,我们对Python进行数据库连接以及增删改查的操作都是基于pymysql库进行的,但是这有一个缺点:每次执行之前都需要对数据库进行连接以及编写大量增删改查的语句,总体来说是比较繁琐的。到了Django框架这边,由于其内部提供了ORM框架,所以使用起来就会变得方便许多。这就有点类似于Java那边的JDBC和MyBatis的区别了。

安装第三方模块:

        由于Django新版底层依赖的pymysql比较差,所以现在我们就比较少使用pymysql,本文会以mysqlclient来进行演示。

​        在pycharm终端输入:pip install mysqlclient

ORM框架:

ORM框架主要的作用是:

  • 创建、修改、删除数据库中的表。(注意:只能针对表操作,无法进行创建数据库,创建数据库只能通过自己的MySQL终端进行创建
  • 操作表中的数据(也就是对表进行增删改查操作)。

步骤一:创建数据库(eg:create database django_mytest default charset utf8 collate utf8_general_ci;

步骤二:使用django连接MySQL数据库

        由于django默认使用的数据库是sqlite,而我们现在使用的是MySQL数据库,所以我们就需要在settings.py文件里面修改一下配置。

请添加图片描述

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'dbname', # 刚才创建数据库的名字
        'USER': 'root',
        'PASSWORD': '123456', # 自己数据库的密码
        'HOST': '127.0.0.1', # 安装MySQL的机器(默认这里都是主机安装)
        'PORT': '3306', # 设置端口号(默认3306)
    }
}

9. 使用ORM框架操作数据库

创建&删除表:

步骤一:在models.py文件中创建类:

请添加图片描述

class UserInfo(models.Model):
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    age = models.IntegerField()

步骤二:在pycharm终端输入命令:

python manage.py makemigrations
python manage.py migrate

请添加图片描述

        注意:在以后新增表或者删除表的时候只需要在这里选择填写或者注释掉之后,再重新运行上面两个命令即可做到新增或者删除表。

修改表结构:

        在表中新增列的时候,由于已经存在的列中可能有数据了,所以在新增列的时候就必须要指定新增列对应的数据(具体有四种做法):

  • 在pycharm终端会进行提示,可以在终端手动输入一个值。
  • 设置默认值。eg:age = models.IntegerField(default=10)
  • 允许为空。eg:age = models.IntegerField(null=True, blank=True)
  • 如果你可以确定表中一定是没有数据的,或者是已经想删除表中的数据的,可以先注释掉运行,再注释回来添加列再输入上面两行命令运行,但是还是不推荐这样子做。

对表中数据进行增删改查操作:


  • 请添加图片描述

请添加图片描述


  • 请添加图片描述

请添加图片描述

  • 查(注意:下面这样得到的是对象,存的是每一列的数据)
    请添加图片描述


  • 请添加图片描述

请添加图片描述

10. 总结

        至此,Django的核心基本知识点就已经完了,总的来说本文就是要快速上手Django框架(快速安装、创建、启动运行Django项目),初步了解一些文件的存放地址规则,以及使用ORM框架来操作数据库等。

        其实到这里,如果之前有学习过其他框架的基础的话,后面做项目的核心也是这个规则,其他Django额外操作是碰到就查的思路完成。当然,如果没有其他框架的基础的话,后面我也会一直更新一些项目来巩固学习等。

        至此,Django的核心基本知识点就已经完了,总的来说本文就是要快速上手Django框架(快速安装、创建、启动运行Django项目),初步了解一些文件的存放地址规则,以及使用ORM框架来操作数据库等。

        其实到这里,如果之前有学习过其他框架的基础的话,后面做项目的核心也是这个规则,其他Django额外操作是碰到就查的思路完成。当然,如果没有其他框架的基础的话,后面我也会一直更新一些Django开发项目来巩固学习等。

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

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

相关文章

ArcGIS基础实验操作100例--实验4矢量要素的镜像复制,缩放

实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 基础编辑篇--实验4 矢量要素的镜像复制,缩放 目录 一、实验背景 二、实验数据 三、实验步骤 (1)加载【Mirror Features】工具 &#x…

VMware之安装Windows10系统

系统下载 下载地址:原版软件 (itellyou.cn) 创建虚拟机系统框架 在菜单栏中选择文件下的新建虚拟机 选择自定义,然后点击下一步 直接下一步 选择稍后安装操作系统,然后点击下一步 因为安装的系统是Windows,这里注意选择Microsof…

使用eBPF追踪Linux内核

简介 BPF,及伯克利包过滤器Berkeley Packet Filter,最初构想提出于 1992 年,其目的是为了提供一种过滤包的方法,并且要避免从内核空间到用户空间的无用的数据包复制行为。它最初是由从用户空间注入到内核的一个简单的字节码构成&…

浏览器:理解HTTP无状态与Cookie的使用

一、理解HTTP无状态 1.1、理解http无状态 http无状态是指协议对于用户身份、用户状态、用户权限、交互场景等没有记忆能力。简单讲就是不能识别用户。 1.2、http无状态的优点: 可以更快地处理大量的事务,确保协议的可伸缩性,减少服务器的…

一文搞定十大排序算法(动画图解)

排序的定义 排序,就是重新排列表中的元素,使表中的元素满足按关键字递增或递减的过程。为了査找方便,通常要求计算机中的表是按关键字有序的。 排序的确切定义如下: 算法的稳定性: 若待排序表中有两个元素 Ri 和 Rj&am…

包装类和简单认识泛型

目录 1.包装类 1.1基本数据类型和对应的包装类 1.2装箱和拆箱 1.3自动装箱和自动拆箱 2.什么是泛型 3.引出泛型 3.1语法 4.泛型类的使用 4.1语法 4.2类型推导 5.裸类型 5.1说明 6.泛型如何编译的 6.1擦除机制 6.2为什么不能实例化泛型类型的数组 7.泛型的上界 …

MaxKey单点登录认证系统3.5.12发布,重要漏洞修复

业界领先的IAM/IDaas身份管理和认证产品 概述 MaxKey单点登录认证系统,谐音马克思的钥匙寓意是最大钥匙,是业界领先的IAM/IDaas身份管理和认证产品,支持OAuth 2.x/OpenID Connect、SAML 2.0、JWT、CAS、SCIM等标准协议,提供安全、标准和开放的用户身份…

STM32/51单片机实训day3——点亮LED灯、闪烁LED灯(二)实践

内 容:编写代码实现LED灯的点亮功能 学 时:2学时 知识点:分析原理图、LED灯控制原理 重点:GPIO参数配置、LED原理图分析 难点:编写 GPIO参数配置函数、LED点亮函数 时间:2022年12月21日 9:00~…

如何轻松做数据治理?开源技术栈告诉你答案

搭建一套数据治理体系耗时耗力,但或许我们没有必要从头开始搞自己的数据血缘项目。本文分享如何用开源、现代的 DataOps、ETL、Dashboard、元数据、数据血缘管理系统构建大数据治理基础设施。 元数据治理系统 元数据治理系统是一个提供了所有数据在哪、格式化方式…

vue2.0中集成并使用ueditor,解决第一次编辑器正常加载,第二次就不加载的问题,父组件调用子组件的方法

vue2.0中集成并使用ueditor 最近有项目需要使用编辑器,就找了一款百度的ueidtor编辑器,第一次用各种不会,所以记录一下 下面的链接就是ueditor的前后端的配置说明和API等 链接: ueidtor的API 下载ueidtor 下载最新版的1.5.0版本&#xf…

基于Flask+bootstrap+sqlite开发宝宝成长管理系统,宝宝成长记录系统源码

BabyLog 岁月如风,唯有此忆, 任凭时光匆匆,记录点点滴滴。 当爸爸了,就多陪陪孩子,有事没事的记些东西,不要总把心思放在程序编码上,也多陪陪孩子! 记录了那么多条数据,是时候也为…

Linux之Shell脚本学习笔记(持续更新中......)

Shell是什么 命令解释器。为用户提供了一个向Linux内核发送请求一i按运行程序的界面系统级程序。 Shell编程快速入门 脚本格式要求 脚本以#!/bin/bash开头脚本需要有可执行权限 编写脚本,输出HelloWorld 编写 #!/bin/bash echo "hello world!"执行 …

Stm32开发1-蓝牙实现STM32的无线烧写程序 ISP模式 串口1不受影响 无线下载

最近研究如何实现Stm32的无线烧写程序。从CSDN上看到大部分的无线烧写方法,大都是采用ESP8266CMSIS-DAP的方式,其能下载也能调试程序,也能通过虚拟串口通信。但是其串口应该是用软件实现的,会占用系统资源,对于其能否实…

【unity3D】DoTween动画插件(上)

💗 未来的游戏开发程序媛,现在的努力学习菜鸡 💦本专栏是我关于游戏开发的学习笔记 🈶本篇是unity的DoTween动画插件 DoTween动画插件(上)基础知识一些常用方法DOMove和DoLocalMovefrom TerrnsDOText打字机…

JavaScript篇.day04-函数, 对象类型

目录 1.函数 2.对象类型 3.例题 (1)斐波拉契数列(递归) (2)猴子吃桃(递归) (3)求100内的数之和(递归) 1.函数 函数: 是完成某个功能的代码块 函数声明 function 函数名(){ }function 函数名(形参1, 形参2...){ }函数表达式: var 函数名 function(){ } 匿名函数 …

springdata-Jpa-04原理

Repository原理 核心机制: 动态代理 : JdkDynamicAopProxy#invoke 调用JPA的Repository统一实现 SimpleJpaRepository 就是去通过JPA的API完成的持久化操作 Spring整合jpa原理 Spring怎么管理Repository( 怎么创建的Repository的Bean) 1.EnableJpaRep…

多线程与高并发(15)——线程池详解(非源码层面)

通过之前的一篇文章,我们总结了Executor框架。而在Executor框架中,ThreadPoolExecutor 是最核心的类。 ThreadPoolExecutor 看字面意思,是线程池的执行器。我们本篇文章就基于ThreadPoolExecutor 这个类来展开总结线程池。 下篇文章会从源码的…

java之线程同步和线程之间的通信

线程同步的概念: 由于同一个进程的多个线程共享同一块存储空间,在带来方便的同时,也会带来访问冲突的问题: 举例: public class Runnable_test implements Runnable {//实现Runnable接口 private int ticknumbers10;Overridepublic void …

【C++】——数据类型(二)

文章目录2. 数据类型2.1 整型2.2 sizeof关键字2.3 浮点型2.3.1 浮点数表示——小数点表示法2.3.2 浮点数表示——E表示法2.3.3 浮点数类型2.4 字符型2.5 转义字符2.6 字符串型2.7 布尔类型bool2. 数据类型 2.1 整型 整数就是没有小数部分的数字,如2、98、 -5286 和…

【机器学习】模型评估与选择(实战)

模型评估与选择(实战) 目录一、准备工作(设置 jupyter notebook 中的字体大小样式等)二、数据集读取与查看三、交叉验证实验1、划分数据集并置乱2、设计交叉验证实验3、进行训练(采用随机梯度下降分类器)4、…