1. 视图主要作用

Django 视图(View)的主要作用可以概括为以下三点:

(1)请求处理中心

  • 接收并处理 HTTP 请求,协调模型(Model)和模板(Template)之间的数据流动

1️⃣请求对象获取

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def handle_request(request):
# 获取请求方法类型
method = request.method # GET/POST/PUT/DELETE

# 获取查询参数(适用于 GET)
query_param = request.GET.get('param_name')

# 获取表单数据(适用于 POST)
form_data = request.POST.get('field_name')

# 获取原始数据(适用于 JSON)
raw_data = json.loads(request.body)

# 获取文件上传
uploaded_file = request.FILES.get('file_field')
阅读全文 »

1. 练习需求

  • 创建一个项目,来说明出版社,书籍和作者的关系。

  • 假定关系:

    • 作者:书籍 -> 1:n (一本书可以由一个作者完成, 一个作者可以创作多本书)
    • 出版社:书籍 -> n: n (一个出版社可以出版多本书, 一本书可以由多个出版社出版)
  • models 直接给出如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Author(models.Model):
first_name = models.CharField(max_length=30, verbose_name="姓")
last_name = models.CharField(max_length=30, verbose_name="名")
email = models.EmailField(verbose_name="电子邮箱")
gender = models.CharField(max_length=10, verbose_name="性别")

def __str__(self):
return f"{self.first_name} {self.last_name}"

class Book(models.Model):
title = models.CharField(max_length=100, verbose_name='书名')
publisher_date = models.DateField()
author = models.ForeignKey(Author, on_delete=models.CASCADE)
publisher = models.ManyToManyField(Publisher)

def __str__(self):
return self.title

class Publisher(models.Model):
name = models.CharField(max_length=30, verbose_name='出版社名')
state_province = models.CharField(max_length=30, verbose_name='省')
city = models.CharField(max_length=30, verbose_name='城市')
country = models.CharField(max_length=30, verbose_name='区')
address = models.CharField(max_length=120, verbose_name='地址')
website = models.URLField(verbose_name='网址')

def __str__(self):
return self.name

阅读全文 »

1.mysql 的相关配置

1.1 驱动安装

1
pip install mysqlclient

1.2 修改 settings.py 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
# }
#
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django7', # 数据库名称
'USER': 'root', # 数据库用户名
'PASSWORD': 'pico123456', # 数据库密码
'HOST': '127.0.0.1', # 数据库主机
'PORT': '3306', # 数据库端口
}
}
阅读全文 »

Django 的模型(Model)是框架的核心组件之一,用于定义数据结构并与数据库进行交互。

1. 模型的作用

  • 定义数据库表的结构(字段、关联关系等)。
  • 通过 Django ORM(对象关系映射)操作数据库,无需直接编写 SQL。
  • 支持数据验证、业务逻辑封装(如保存前后的操作)。
阅读全文 »

Jinja2 是一个基于 Python 的模板引擎,广泛用于生成 HTML、XML 或其他标记语言。它被许多框架(如 Flask 和 Django)使用,具有灵活的语法和强大的功能。对比 Django 的模板,总结一下 Jinja2。

0. 官网

  • 官方文档Jinja2 官方文档
  • Flask 教程:Flask 框架中大量使用 Jinja2,学习 Flask 时可以顺便掌握 Jinja2。
  • 在线练习:使用在线 Python 环境(如 Replit)练习 Jinja2 模板渲染。

1. 安装

1
pip install Jinja2
阅读全文 »

Django 框架中,模板是可以帮助开发者快速生产呈现给用户页面的工具。

模板的设计方式实现了我们 MTV(M:Model,V:View,T:Template) 中 VT 的解耦(解耦:是指降低软件模块之间的相互依赖程度),VT 有着 N:M 的关系,一个 V 可以调用任意 T,一个 T 可以工任意 V 使用。与 Java 的 MVC 很像,M 为 Model, V 为 View 界面, C 为 Controller 控制器。

模板的处理分为 2 个过程:

  • 加载 HTML
  • 渲染数据(render ( ))

模板主要有 2 个部分

  • HTML 静态代码
  • 模板语言,动态插入的代码段(“挖坑”,“填坑”)

模板中的动态代码除了做基本的静态填充,还可以实现一些基本的运算,转换和逻辑。

静态页面:页面数据是本地固定的。
动态页面:页面数据来源于后台服务器。

阅读全文 »

1. 书摘

  1. 时间管理,其实就是人生管理,是时间的管理方法或者说艺术,构成了不同的人生。
  2. 做事靠系统,不是靠感觉!当你真正建立起来一套系统,并运转良好的时候,你就可以获得解放。
  3. 我们应该在工作时尽量追求一种‘心静如水’的境界。
  4. 时间管理管理的是承诺,履行承诺的能力就是时间管理的能力。
  5. 自律即自由!
阅读全文 »

1. 路由 router

在实际开发过程中,一个 Django 项目会包含很多的 app,这时如果我们只在主路由里进行配置就会显的杂乱无章,所以通常会在每个 app 里,创建各自的 urls.py 路由模块,然后从根路由出发,奖 app 所属的 url 请求,全部转发到相应的 urls.py 模块中,而这个从主路由转发到各个应用路由的过程叫做路由分发。

阅读全文 »

由于现在使用的测试机较多,某一台测试机上发现了有一个 bug,需要截图发送到 Mac 上,IOS 还好可以使用隔空投送Android 就比较麻烦了,之前在电脑上共享了一个文件夹,在各个 Android 上,使用软件连接这个文件夹,后面发现了一个无视平台 (支持 window/macos/linux/Android/ios) 的神器 localsend,果断将所有测试机和 Mac 上。

1. 下载地址

github 地址:https://github.com/localsend

官网地址:https://localsend.org/zh-CN/download?os=macos

阅读全文 »

0.Charles 简介

Charles 是一款功能强大的 HTTP 代理服务器、HTTP 监视器和反转代理服务器,它可以帮助开发者和测试人员监控和分析 HTTP 和 HTTPS 网络通信。Charles 支持多种操作系统,包括 Windows、MacOS、iOS 和 Android。

主要功能如下:

  • HTTP 和 HTTPS 代理:Charles 可以捕获和分析 HTTP 和 HTTPS 请求和响应。
  • 流量控制:可以模拟不同的网络条件,如弱网测试。
  • 接口并发请求:支持同时处理多个网络请求。
  • 重发网络请求:方便开发者测试和调试。
  • 断点调试:结合 Python 的 Flask 等工具进行 Mock Server 开发。
  • 支持反向代理:可以将请求转发到不同的服务器。
  • 网络限速:模拟不同网络类型下的应用表现。
  • 解析 AMF 协议:支持解析高级消息格式协议。
阅读全文 »
0%