# Sweettalk-Django 4.2

## 项目介绍

Django 是一个使用 Python 编写的开源 Web 应用程序框架，它提供了一套用于快速开发安全、
可扩展和高效的 Web 应用程序的工具和功能。Django 基于 MVC（Model-View-Controller）架构模式，采用了最佳实践，强调代码的可重用性和可维护性。它的设计理念是 DRY（Don't Repeat Yourself），
通过提供许多内置功能和现成的解决方案，使开发人员能够专注于业务逻辑而不必从头开始构建所有组件。此次开源项目旨在为大家讲解基础的 Django 项目创建，
以及简单程序的编写。  

该项目示例是一个商品入库和查询系统，通过我们构建的数据表，将商品的详细信息入库存储，并且可以按条件过滤查询数据，获取详细商品或者商品品类的信息。

在线阅读地址：[https://likechen.gitbook.io/sweettalk-django4.2/
](https://joe-2002.github.io/sweettalk-django4.2/#/)
## 项目受众

**开发人员和程序员**

Django 是一个流行的 Web 框架，许多开发人员和程序员选择使用它来快速构建可扩展的 Web 应用程序。无论是有经验的开发人员还是初学者，Django 都提供了一个强大且易于使用的平台来创建功能丰富的网站和应用。


**学生和教育机构**

许多大学、学院和教育机构将 Django 作为教学的一部分，因为它简单易懂，同时又涵盖了 Web 开发的各个方面。学生可以通过学习 Django 来获得实际的编程经验，并将其应用到项目中。

**创业者和企业家**

对于有创业想法或开设在线业务的人来说，Django 是一个理想的选择。它提供了一个稳定、可靠且高效的开发平台，可以帮助他们快速构建起自己的网站或应用程序，并提供必要的功能和工具来支持业务的发展。

**Web 设计师和 UI/UX 设计师**

尽管 Django 是一个后端框架，但在开发过程中，与前端设计师和 UI/UX 设计师密切合作是非常重要的。Django 提供了与前端技术（如 HTML、CSS 和 JavaScript）的无缝集成，并允许设计师将设计和用户体验融入到 Web 应用中。

## 基本信息

学习周期：8 天，每天平均花费时间 1 小时- 2 小时不等，根据个人学习接受能力强弱有所浮动。

学习形式：理论学习 + 练习

人群定位：可以零基础入门

难度系数：中等

如果觉得本项目中有错误，可以 [点击这里](https://github.com/Joe-2002/sweettalk_django4.2/issues) 提交你希望补充的内容，我们看到后会尽快进行补充。

## 项目亮点

- 本项目拥有清晰简洁的教学文档和匹配的课后习题。

- 项目开发过程中会涉及到设计、开发、调试、部署等多个环节，这将使你熟悉整个 Web 应用的生命周期。

## 学习人数  

| Datawhale 开源学习 | Django 后端开发入门 |
| :----------------: | :-----------------: |
|      第 49 期      |        54人         |
|      第 51 期      |        89人         |
|      第 52 期      |        59人         |

## 项目规划

### Day1

#### 安装虚拟环境与依赖包  

1. 安装虚拟环境

2. 在虚拟环境中安装django依赖包

#### 额外的工具  

1. debug_toolbar 库  

2. django_extensions 库

#### 搭建项目

1. 新建一个名为 erp 的项目

2. 在 apps 中，新建名为 data 的 app

3. 在 apps 中，新建名为 purchase 的 app

#### 运行项目

1. 配置 settings.py 文件

2. 运行项目

### Day2

#### 创建 Django 项目和 APP

#### 数据表的常用字段和常用配置

1. 熟悉数据表的常用字段和常用配置  

2. 尝试使用数据表的字段和配置

### Day3  

#### 配置 settings.py 和 启动项目

#### 引入 admin 后台和管理员

1. 创建 admin 的超级管理员  

2. 在 admin 文件中引入数据表
3. 注册数据表到 admin

#### 外键的使用

1. 给产品表创建一个外键  

2. 撰写根据产品分类筛选产品的 api
3. 使用 postman 调用 api

### Day4  

#### Django 构建数据表创建与数据迁移

#### 构建数据表并合并

1. 创建产品分类和产品两个数据表  

2. 执行生成迁移脚本命令和迁移命令

### Day5  

#### Django-models 的常用字段和常用配置

#### APIView

1. 使用 APIView，试比较 APIView 和 as_view 的区别  

2. 使用 APIView 的 as_view 方法

### Day6  

#### django-admin 引入admin后台和管理员

#### 构建序列化

- 构建序列化  

- 序列化单个字段
- 序列化多个字段
- 序列化所有字段

#### 序列化的高级使用

- 序列化单个对象  

- 序列化多个对象
- 序列关联对象（有外键）

#### 构建数据表

### Day7

#### DRF 功能概述  

- #### Django-DRF 的使用

- #### Django-DRF 简介

#### QuerySet 和 Instance

1. 输出相关数据的数据类型，找出 QuerySet 和 Instance  

2. 尝试对数据进行增删查改等操作

#### DefaultRouter 的使用

- 导入 DefaultRouter  
  
- 使用 DefaultRouter 注册 API
- 将 API 导入项目路由配置中

#### 自定义函数的使用

- 引入自定义函数的装饰器  

- 编写自定义函数
- 测试自定义函数

## 更新计划  

|       内容        |                            详细内容                            |  更新时间  |  撰写  |  审核  |
| :---------------: | :------------------------------------------------------------: | :--------: | :----: | :----: |
| P11、P12 内容合并 |      ***ModelViewSet、DefaultRouter 和自定义函数*** 合并       | 2023/12/07 | 郭丹丹 | 袁博文 |
|    P8 内容扩充    |       ***QuerySet 和 Instance 补充相关概念与代码示例***        | 2023/12/07 | 袁博文 | 张海生 |
|   P10 内容补充    | ***Django Serialization 序列化的高级使用*** 补充相关概念与示例 | 2023/12/07 | 张海生 | 刘建建 |
|  增加 P12 新内容  |    ***Postman 以及国内API调试工具介绍*** 增加 API 工具介绍     | 2023/12/07 | 郭丹丹 | 李柯辰 |
|  增加 P13 新内容  |          ***Django 课后练习题*** 增加 Django 课后习题          | 2023/12/07 | 刘建建 | 张海生 |
|   完善 P07 内容   |      ***在视图集中构建数据表*** 完善新增数据查询数据流程       | 2023/12/17 |  朱敏  | 李柯辰 |

## 贡献者

项目负责人：[李柯辰](https://github.com/Joe-2002)

邮箱： [likechen@linchance.com ](likechen@linchance.com)


<div>
<table border="0">
  <tbody>
    <tr align="center" >
      <td>
         <a href="https://github.com/Joe-2002"><img width="70" height="70" src="https://github.com/Joe-2002.png?s=40" alt="pic"></a><br>
         <a href="https://github.com/Joe-2002">李柯辰</a> 
        <p> 南京航空航天大学<br>江苏霖承科技有限公司</p>
      </td>
      <td>
         <a href="https://github.com/zhumengyu"><img width="70" height="70" src="https://github.com/zhumengyu.png?s=40" alt="pic"></a><br>
         <a href="https://github.com/zhumengyu">朱梦雨</a> 
        <p>南通理工学院<br>江苏霖承科技有限公司</p>
      </td>
      <td>
         <a href="https://github.com/Ethan-2004"><img width="70" height="70" src="https://github.com/Ethan-2004.png?s=40" alt="pic"></a><br>
         <a href="https://github.com/Ethan-2004">张海生</a>
         <p>南通师范高等专科学校<br>江苏霖承科技有限公司</p>
      </td>
    </tr>
  </tbody>
</table>
</div>
  
## 🌟 Star History

[![Star History Chart](https://api.star-history.com/svg?repos=Joe-2002/sweettalk-django4.2&type=Date)](https://star-history.com/#Joe-2002/sweettalk-django4.2&Date)

## 致谢

特别感谢 [Sm1les](https://github.com/Sm1les)、[胡锐锋](https://github.com/Relph1119)、[周理璇](https://www.github.com/Aomferni) 对本项目的帮助与支持。

 特别感谢以下为教程做出贡献的同学！

<a href="https://github.com/Joe-2002/sweettalk-django4.2/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=Joe-2002/sweettalk-django4.2" />
</a>

## 🌐 项目地址

[![GitHub](https://img.shields.io/badge/GitHub-Repository-brightgreen)](https://github.com/Joe-2002/sweettalk_django4.2)
