使用 django + REST 框架时,django MVC 的哪些部分变得无关紧要?
what parts of django MVC becomes irrelevant when using django + REST framework?
最近开始学习 Django。
长话短说 -
如果我选择合并:
- 我服务器端的django框架
- REST 作为中间件层
- 一些客户端框架(例如 React、Angular 等)
django 的哪个 MVC components 会变得无关紧要?
我假设 templates 组件。在这种情况下是否还有其他不需要的基本组件(model/view ...)?
根据您的 post 假设您使用 Django 只是从数据库中提取数据并以 JSON 格式将其返回给客户端,并且您的模板将被呈现 client-side(使用,例如 Angular)那么你是对的,你可能不需要 Django 模板。但是,您仍然需要某种模型(无论您使用 Django 模型还是其他东西)并且还需要控制器(Django 调用 views)以便:
- 进行URL路由(即绑定一些URL到一些controller/view
功能)。
- 进行某种 server-side 处理。即使你的应用
是一个 single-page 应用程序并进行大量 client-side 处理,
您仍然可能需要实施不同类型的业务
服务器端的要求和验证。其中一些
您可能会附加到模型的要求,但您可能会附加其他要求
需要在控制器中实现。
因此,尽管由于您构建应用程序的方式,您的控制器(又名视图)可能很多 "skinnier",但它们在某种程度上仍然是必需的。如果您想要一些干净且一致的数据库 API,模型将始终是必需的。
编辑:为了对此进行更多扩展——虽然有一个名为 Django REST Framework 的 Python 库,但它实际上只是帮助您构建 RESTful APIs。您当然可以使用 Django 自己构建 RESTful API,而无需利用它或任何其他库。正如用户 D. Shawley 在回答这个问题时所说的那样 -- What exactly is RESTful programming? -- RESTful API 基本上只是一个资源由持久标识符标识的资源(在这种情况下, URIs),以及使用一组通用动词(在本例中为 HTTP 方法,如 GET、POST、DELETE 等)操作资源的位置。因此,使用 URI 作为名词和 HTTP 方法作为动词的想法,您的 Django 框架可能支持以下 RESTful 操作:
GET
https://your-app.com/product/123
- 此操作获取由 ID 123
标识的产品
POST
https://your-app.com/product
- 此操作创建一个新产品
PUT
https://your-app.com/product/123
- 此操作更新由 ID 123
标识的产品
DELETE
https://your-app.com/product/123
- 此操作删除由 ID 123
标识的产品
从这些操作返回的数据不一定需要采用任何特定格式(可以是 JSON、XML 或其他格式)。在严格遵守 REST 原则的应用程序中,客户端(您的 RESTful API 的消费者,在本例中是您的 front-end 应用程序)将能够指定(使用 HTTP Accept
header)他们想要使用哪种格式的数据。
我希望这不会太混乱,但我真的想说清楚 REST 架构只是一组原则,APIweb 程序员开发的可能不一定 100% 遵守这些原则.您的应用程序是否有必要严格遵守 RESTful 原则取决于您的特定要求。那么要问自己的一个问题是,您希望通过使用 Django 构建 RESTful API 来完成什么?对于很多开发人员来说,答案很简单 "so that I have an easy-to-use interface for my Angular/React/etc. app to retrieve and update server-side resources."
最近开始学习 Django。
长话短说 -
如果我选择合并:
- 我服务器端的django框架
- REST 作为中间件层
- 一些客户端框架(例如 React、Angular 等)
django 的哪个 MVC components 会变得无关紧要?
我假设 templates 组件。在这种情况下是否还有其他不需要的基本组件(model/view ...)?
根据您的 post 假设您使用 Django 只是从数据库中提取数据并以 JSON 格式将其返回给客户端,并且您的模板将被呈现 client-side(使用,例如 Angular)那么你是对的,你可能不需要 Django 模板。但是,您仍然需要某种模型(无论您使用 Django 模型还是其他东西)并且还需要控制器(Django 调用 views)以便:
- 进行URL路由(即绑定一些URL到一些controller/view 功能)。
- 进行某种 server-side 处理。即使你的应用 是一个 single-page 应用程序并进行大量 client-side 处理, 您仍然可能需要实施不同类型的业务 服务器端的要求和验证。其中一些 您可能会附加到模型的要求,但您可能会附加其他要求 需要在控制器中实现。
因此,尽管由于您构建应用程序的方式,您的控制器(又名视图)可能很多 "skinnier",但它们在某种程度上仍然是必需的。如果您想要一些干净且一致的数据库 API,模型将始终是必需的。
编辑:为了对此进行更多扩展——虽然有一个名为 Django REST Framework 的 Python 库,但它实际上只是帮助您构建 RESTful APIs。您当然可以使用 Django 自己构建 RESTful API,而无需利用它或任何其他库。正如用户 D. Shawley 在回答这个问题时所说的那样 -- What exactly is RESTful programming? -- RESTful API 基本上只是一个资源由持久标识符标识的资源(在这种情况下, URIs),以及使用一组通用动词(在本例中为 HTTP 方法,如 GET、POST、DELETE 等)操作资源的位置。因此,使用 URI 作为名词和 HTTP 方法作为动词的想法,您的 Django 框架可能支持以下 RESTful 操作:
GET
https://your-app.com/product/123
- 此操作获取由 ID123
标识的产品
POST
https://your-app.com/product
- 此操作创建一个新产品PUT
https://your-app.com/product/123
- 此操作更新由 ID123
标识的产品
DELETE
https://your-app.com/product/123
- 此操作删除由 ID123
标识的产品
从这些操作返回的数据不一定需要采用任何特定格式(可以是 JSON、XML 或其他格式)。在严格遵守 REST 原则的应用程序中,客户端(您的 RESTful API 的消费者,在本例中是您的 front-end 应用程序)将能够指定(使用 HTTP Accept
header)他们想要使用哪种格式的数据。
我希望这不会太混乱,但我真的想说清楚 REST 架构只是一组原则,APIweb 程序员开发的可能不一定 100% 遵守这些原则.您的应用程序是否有必要严格遵守 RESTful 原则取决于您的特定要求。那么要问自己的一个问题是,您希望通过使用 Django 构建 RESTful API 来完成什么?对于很多开发人员来说,答案很简单 "so that I have an easy-to-use interface for my Angular/React/etc. app to retrieve and update server-side resources."