搭建一个前后端分离的Django框架(windows 后端篇)

目录

 

一:Django框架是什么?

二:Django框架搭建与创建项目命令(图文)

1.1:安装Django

1.2:Django创建项目

1.3:模块介绍

1.4:创建app模块

1.5:注册应用

三:配置数据库

1.1:数据库配置

1.2:字段类型

四:后端代码的编写

1.1:APIView的介绍

1.2:HttpResponse的介绍

1.3:安装APIView

1.4:编写代码(简单)

1.5:启动后端

五:解决前端发送请求跨域问题

1.1:安装cors

1.2:修改settings中的配置文件

1.3:添加中间件列表


 

一:Django框架是什么?

首先Django 是一个用 Python 编写的高级 Web 框架,它鼓励快速开发和干净、实用的设计。Django 遵循模型-视图-模板(MVT)架构模式,这是模型-视图-控制器(MVC)模式的一种变体,用于将应用程序的不同部分(数据访问逻辑、业务逻辑和表现层)分离。Django 的目标是让开发者能够用尽可能少的代码完成开发任务,同时保持代码的可维护性和可扩展性。

废话不多说,不太懂的可以参考一下别人的介绍,我这里直接开始怎么快速搭建一个框架,并前后端可以互通

二:Django框架搭建与创建项目命令(图文)

1.1:安装Django

输入命令:pip install django  

备注:这里如果网速比较慢,想快速下载的可以使用镜像,以下是我提供的清华镜像(来源于网络):  

-i https://pypi.tuna.tsinghua.edu.cn/simple

使用方法:pip install [包名] -i [pip源URL]

1.2:Django创建项目

按住键盘Shift键 找到Powershell 并打开

e170eb3b18c94f16aac5bdce97d6b3b4.png

bcc0f8d83f4f4c0b89448e8ce72363cc.png

输入创建项目命令:

 注意创建的目录位置
django-admin startproject 项目名

a92dff466b194a5aa2a9edca71942814.png

c30080a0b39e4d3a868d52b98844abd8.png

1.3:模块介绍

打开项目,结构如下:

5b702b0aa0f54011aafcb889523e6c27.png

1.4:创建app模块

为什么要创建app模块,因为在项目开发中,我们有不同的板块,比如订单板块、用户板块我们都可以单独创建一个独立的app模块,这里的app模块类似于JAVA的微服务

 

第一种方法:cmd       cd到项目文件地点

第二种方法:手动打开项目文件夹  按shift键 打开Powershell

python manage.py startapp 模块名

b3c9918bad744105b5263b9b90c868c8.png

这时候我们的项目结构是这样的:

7fa149c0f3a34fefafb999bfe6973c36.png

模块介绍:

  • 模型(Models):定义你的数据结构,即数据库中的表。Django的ORM(对象关系映射)允许你以Python类的方式定义模型,Django会自动为你创建数据库表。

  • 视图(Views):处理业务逻辑和返回响应给客户端。视图函数接收HTTP请求,执行相应的逻辑(如查询数据库、处理表单数据等),然后返回一个HTTP响应。

  • 模板(Templates):Django使用模板系统来生成发送给客户端的HTML。模板文件通常包含静态部分和动态部分(如从数据库查询的数据)。

  • 表单(Forms):用于处理用户输入。Django的表单系统允许你定义表单字段,验证用户输入,并渲染表单到HTML。

  • 迁移(Migrations):当你修改模型时,Django可以自动创建迁移文件来记录这些更改。你可以使用迁移文件来更新数据库结构,以保持数据库与模型同步。

  • URL配置(URLs):Django使用URLconf(URL配置)来将URL映射到视图。你需要在应用的urls.py文件中定义这些映射,并在项目的根urls.py文件中包含应用的URLconf。

1.5:注册应用

创建应用后,你需要在项目的settings.py文件中的INSTALLED_APPS列表中添加应用的名称(不包括.py扩展名)。这告诉Django你的应用是项目的一部分,并且应该被包含在项目的URL配置、模板搜索路径等中

找到settings.py文件中的INSTALLED_APPS列表,并添加你的应用名称,如下所示

7d42846b5c7c4089b6720950cda36d6a.png

 

现在你的应用已经创建并注册到Django项目中,你可以开始添加模型、视图、模板等,以开发你的应用功能了。

三:配置数据库

1.1:数据库配置

安装mysql的数据库驱动mysqlclient

两种方法 同上(创建app模块)

 pip install mysqlclient

5954920cf02d448a8936556dc4bc6b2a.png

找到项⽬的 settings.py ⽂件中找到DATABASES 配置项

默认:

5f8d1b6efd4a4f299548c2e3a10ff564.png

这段代码是Django框架中用于配置数据库连接的一个示例。Django是一个用Python编写的高级Web框架,它鼓励快速开发和干净、实用的设计。在Django项目中,数据库配置是项目设置的一部分,它告诉Django如何连接到你的数据库。这段代码具体配置了Django项目的默认数据库连接

将其修改为:数据库(名称)(用户名)(密码)(主机地址)仅供参考

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'myapp',  # 数据库名称
        'USER': 'root',  # 数据库用户名
        'PASSWORD': '123456',  # 数据库密码
        'HOST': 'localhost',  # 数据库主机地址
        'PORT': '3306',  # 数据库端口号
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
        },
    }
}

'OPTIONS': { 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", },

解释:在Django的数据库配置中,OPTIONS 字典允许你为数据库连接指定额外的选项或参数。OPTIONS 字典被用来设置MySQL数据库的sql_mode,这里的 init_command 选项用于在数据库连接建立后立即执行一条SQL命令。在这个例子中,执行的命令是 SET sql_mode='STRICT_TRANS_TABLES'

1.2:字段类型

  1. models.CharField
    • MySQL 字段类型:VARCHAR 或 CHAR(取决于Django字段的max_length和数据库配置)
    • 用途:用于存储短字符串,如姓名、电子邮件地址等。
  2. models.TextField
    • MySQL 字段类型:TEXT 或 LONGTEXT(取决于需要存储的文本量)
    • 用途:用于存储大量文本,如文章、评论等。
  3. models.IntegerField
    • MySQL 字段类型:INT
    • 用途:用于存储整数值,如年龄、数量等。
  4. models.DateTimeField
    • MySQL 字段类型:DATETIME
    • 用途:用于存储日期和时间,包括时区信息(如果启用了Django的时区支持)。
  5. models.EmailField
    • MySQL 字段类型:VARCHAR(因为Django没有专门的Email类型,所以它会使用CharField,并附加一个Email验证器)
    • 用途:用于存储电子邮件地址,并在模型验证时检查格式是否正确。

 

需要注意的是,虽然Django字段类型在内部会映射到MySQL的相应字段类型,但Django也提供了一些机制来覆盖这些默认映射,比如通过自定义字段或使用数据库迁移时的特定选项。此外,Django还提供了许多其他字段类型,如models.BooleanField(映射到MySQL的TINYINT)、models.FloatField(映射到MySQL的FLOATDOUBLE)等,以满足不同的数据存储需求

 

四:后端代码的编写

这里前端代码小镇这里就不提供了,有兴趣的小伙伴可以去vue官网学习一下,小镇后期可能会出一期关于前端vue框架的相关知识,可以完整看到前后端联调

 

小镇这里采用了django框架中的基类APIView和HttpResponse

1.1:APIView的介绍

APIView的作用

APIView是DRF的核心之一,它为构建RESTful Web服务提供了基础。通过继承APIView,你的视图类可以获得以下功能:

  1. 请求解析APIView能够自动解析HTTP请求中的数据,包括JSON和表单数据,并将它们转换为Python对象,这样你就可以在视图的方法中直接使用这些数据了。

  2. 响应渲染:与请求解析相对应,APIView也能够根据客户端的请求头(如Accept头)自动选择合适的响应格式(如JSON、XML等),并将Python对象渲染成相应的响应体。

  3. 内容协商APIView支持内容协商,即根据客户端的请求自动确定最适合的响应格式。

  4. 认证:DRF提供了多种认证机制,如Token认证、Session认证等。通过APIView,你可以轻松地为你的API视图添加认证功能。

  5. 权限:与认证类似,DRF也提供了权限控制功能。通过APIView,你可以控制哪些用户或用户组可以访问特定的API视图。

  6. 限流:为了防止API被过度使用,APIView支持限流功能,可以限制特定时间内某个客户端可以发起的请求数。

  7. 请求/响应生命周期APIView定义了一个请求/响应的生命周期,包括请求的接收、处理、响应的生成和发送等阶段。通过重写APIView中的方法(如dispatchgetpost等),你可以自定义这些阶段的行为。

1.2:HttpResponse的介绍

HttpResponse 的作用

  • 生成响应HttpResponse 类用于生成 HTTP 响应,并将其发送给客户端(如浏览器)。你可以设置响应的状态码、内容类型(MIME 类型)以及响应体(即发送给客户端的内容)。

  • 设置状态码:HTTP 响应通常包含一个状态码,用于指示请求是否成功、失败或需要重定向等。HttpResponse 允许你通过其构造函数或 status_code 属性来设置响应的状态码。

  • 设置内容类型:内容类型(也称为 MIME 类型)告诉客户端响应体的内容是什么类型的。例如,text/html 表示 HTML 文档,application/json 表示 JSON 数据。你可以通过 content_type 属性来设置响应的内容类型。

  • 设置响应体:响应体是实际发送给客户端的数据。你可以通过传递一个字符串(或其他可迭代的字节序列)给 HttpResponse 的构造函数来设置响应体,或者使用 write() 方法或 content 属性来修改它。

1.3:安装APIView

HttpResponse已经提供了不需要安装

两种方法 同上(创建app模块)

pip install djangorestframework  #这里我使用一下的镜像,上方有提供

f90624ebc6314d3e939ff60ca960d1d7.png

1.4:编写代码(简单)

导入并继承APIView

9ec6f65226314111bc1f5ba30cc09402.png

配置相关路径:

在Django中,as_view() 方法是一个非常重要的方法,它通常与基于类的视图(Class-Based Views, CBVs)一起使用。当你看到类似 path('login/', login.as_view()), 的代码时,这里的 login 很可能是指向了一个基于类的视图(Class-Based View)的实例或者引用。as_view() 方法的作用是将这个类(login)转换为一个可调用的视图函数,这个视图函数可以被Django的URL解析器(URL resolver)调用,以响应HTTP请求

as_view() 方法:

当你定义一个基于类的视图后,你需要通过URL配置来指定当某个URL被请求时应该调用哪个视图。由于URL配置期望的是一个函数(或可调用对象),而不是类,因此你需要使用 as_view() 方法来将你的类转换为一个视图函数。

 

当你调用 login.as_view() 时,Django会执行以下操作:

 

首先,检查这个类(login)是否是一个有效的基于类的视图。

然后,它准备一些必要的上下文和配置(如请求方法、URL参数等),并创建一个该类的实例。

最后,它返回一个可调用的视图函数,这个函数封装了类的 dispatch() 方法(或者类中定义的其他特定HTTP方法处理函数,如 get()、post() 等),以便在接收到请求时调用。

26fec85903594c9c9ff136e446196af0.png

 

1.5:启动后端

9b9e864eb9c745798870dd3670bca454.png

前端发送请求后出现一个CORS跨域问题,解决方法如下

c6b1591445d34d91b7254dc20f55f4a2.png

五:解决前端发送请求跨域问题

这里小镇是通过通过 django-cors-headers 库来实现的,使用其他方法可以网上寻求一下

1.1:安装cors

两种方法 同上(创建app模块)

pip install django-cors-headers #这里我使用一下的镜像,上方有提供

ea4bb81ab7e644cda098ada024a83efe.png

1.2:修改settings中的配置文件

找到INSTALLED_APPS 那一项加入:

corsheaders

e2e77681ad1a40709302d1358e36aaa9.png

1.3:添加中间件列表

找到MIDDLEWARE 

corsheaders.middleware.CorsMiddleware

4bfa684ad0854966be1f80ab04e6e3cb.png

然后,添加下面配置 允许所有 domain 访问

CORS_ORIGIN_ALLOW_ALL = True

这样跨域的问题就解决了

c70b042be2714d5c9fe58953601ff65c.png

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值