一尘不染

Django,REST和Angular路线

angularjs

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

我一直在尝试在线阅读很多相关内容,但是文档非常有限,尤其是在Django与Angular结合使用的情况下(这里或那里的小片段)。我知道我需要添加一个类似TastyPie的REST框架,以便在我的应用程序中创建一个健壮的REST接口,以便Angular插入并获取资源。

但是,我对如何正确地映射路线感到困惑,即(1)服务器端应用程序可以渲染带有角插入的单页应用程序(SPA)(2)本应加载信息/渲染模板(角度)和从服务器检索数据(django)不会冲突。就像如果有人在我的网站上进行site.com/user/1234一样-
该路由与Angular路由和Django路由都相关联-除了一个路由呈现模板,另一个路由基于从中获取的内容吐出JSON数据库/服务器。

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


阅读 233

收藏
2020-07-04

共1个答案

一尘不染

这个问题并不是真正针对Django的-只是了解SPA中后端与前端之间关系的问题。

后端和前端之间没有路由重复。您的Django路线应设置为:

/api/foo
/api/bar
...

和一个 单一的 ,提供了一个路线 单一 页面完整的HTML谐音,例如

/

其余路线将在Angular中定义,例如

/articles/234
/blog/date/slug
...

处理这些面向公众的路由的Angular控制器将依次对API URL进行$
http调用,并且每个控制器将传递一个Angular部分。因此,没有重复,也没有重叠。

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

如果您正确构建API,则每个视图中所需的所有数据将完全显示在Angular在该视图中使用的JSON
feed中。因此,您正在使用ORM进行后端数据构建,但是如果不先准备后端数据来为其提供数据,就不能决定遍历模板中的模型关系。

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

2020-07-04