Django、REST 和 Angular 路由

标签 django rest angularjs routes

我正在尝试将 AngularJS 之类的客户端框架与 Django 结合起来。真正让我困惑的一件事是路由和 REST 的问题。

我一直试图在网上阅读很多关于它的信息,但文档是有限的,特别是在 Django 与 Angular 结合方面(这里或那里的小片段)。我知道我需要添加一个像 TastyPie 这样的 REST 框架来在我的应用程序中创建一个健壮的 REST 接口(interface),以便 Angular 插入并获取资源。

但是,我很困惑如何正确映射我的路线,以便(1)我的服务器端应用程序可以呈现我的单页应用程序(SPA),并插入有 Angular 的(2)应该的路线加载信息/渲染模板( Angular )和从服务器(django)检索数据不冲突。就像我有人在我的网站上做 site.com/user/1234 一样——该路由与 Angular 路由和 Django 路由相关联——除了一个渲染模板,另一个根据从中检索到的内容吐出 JSON数据库/服务器。

此外,通过使用 REST api,我是否放弃了在将 ModelForms 与我的模型同步等方面的许多优势?有什么方法可以用 AngularJS 来维护它,还是我必须寻找一个 AngularJS 替代品。

最佳答案

这个问题并不是 Django 所特有的——只是了解 SPA 中后端和前端之间的关系。

后端和前端之间的路由不重复。您的 Django 路由应设置如下:

/api/foo
/api/bar
...

和一个单一的路由,它提供一个完整的 HTML 部分页面,例如
/

其余的路线将在 Angular 中定义,例如
/articles/234
/blog/date/slug
...

处理这些面向公众的路由的 Angular Controller 将依次对 API URL 进行 $http 调用,并且每个 Controller 都会提供一个 Angular 部分。所以没有重复,没有重叠。

对于您问题的第二部分,您仍然可以在构建 API 数据时使用 Django ORM 模型关系,但是是的,在构建前端时您将失去所有 Django 的优点。

如果您正确构建 API,则每个 View 中所需的所有数据都将完全呈现在 Angular 在该 View 中使用的 JSON 提要中。因此,您使用 ORM 进行后端数据构建,但您不能在不先准备后端数据为其提供数据的情况下,就决定在模板中遍历模型关系。

是的,这是一种非常不同的思考方式,是的,它比直接使用 Django(或 Rails)复杂得多。这就是构建 Web 应用程序而不是网站的成本。

关于Django、REST 和 Angular 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16289043/

相关文章:

javascript - 环境设置 egghead.io 教程?

python - 部署了 rest-framework 的 django 时出错

python - 完成 django 数据库重置

Angular 6 ResponseContentType

rest - 在展开查询中选择之前进行 OData 过滤

javascript - 路由时在配置中的 templateUrl 上应用条件

javascript - jQuery 一次加载 10 个项目

python - 有人有 PyCharm 的 monokai 主题吗?

php - 如何将我的 ionic 应用程序连接到 MySQL 数据库?

javascript - 带有 ng-repeat 的动态 ng-model