django 和 vue 如何结合?

2020-03-05 11:41:47 +08:00
 kevinguoCN

不太懂前端。目前看到比较多的 vue +django restAPI.这样完全放弃了 django 的 view 操作 vue 需要自己提供路由 有什么 vue 和 django 的解决方案可以提供参考吗?

4089 次点击
所在节点    问与答
14 条回复
YvesX
2020-03-05 12:04:13 +08:00
这样不好吗
Vegetable
2020-03-05 12:08:25 +08:00
这就是前后端分离了。如果想轻度使用 vue 的话,那直接 script 引入当 jquery 用就好了。
kindjeff
2020-03-05 12:13:26 +08:00
只能在 Django 项目里建一个目录起 vue 项目,然后配置 Django 的模板和静态文件目录,指定到 vue 项目生成的目录
bnm965321
2020-03-05 12:16:36 +08:00
django 的 view 是 MVC 中的 controller,为什么会放弃。

如果不用 DRF,可以直接用 view 写你的接口。

如果楼主说的 view 是 template,那么确实不能按照 django 的规矩用了。vue 生成的 bundle 文件只有一份,django 只要 render 一次就行了
kevinguoCN
2020-03-05 12:19:22 +08:00
@bnm965321 那么这样做。 一个页面 render 一次,然后其他的在该页面上的操作 全部改为 api 去操作。
kevinguoCN
2020-03-05 12:20:30 +08:00
@kindjeff 在 django 的 templetes 目录下 起一个 vue 的目录,然后在 settings 中 配置静态文件,
vicalloy
2020-03-05 12:23:09 +08:00
Django 只提供同后端数据交互的 API,所有前端的路由完全由 Vue 自己管理。
cnanyi
2020-03-05 12:23:20 +08:00
也可以把 vue 当成 jquery 那样单独引用进去,但是这样的话,很多 es6 语法就不能用了。django 的 admin 很好用, 是 template 方式的, 而 vue 最好使用 singleapp 的方式做前后端分离。 所以不建议 django 框架使用 vue。
如果一定要一起用, 可以把后台数据的 CRUD 用 django admin 管理, 业务系统用 django 出接口, 前端用 vue 单独起个应用。 设置好认证规则, 在前端页面做整合
bnm965321
2020-03-05 12:38:01 +08:00
@kevinguoCN vue 是 SPA,怎么一个页面 render 一次呀
abcbuzhiming
2020-03-05 12:39:14 +08:00
所有前后端分离都是一个套路,放弃后端框架的魔板引擎,只输出 json (或者其它的结构数据),模板引擎放在前端,由前端渲染出最终页面效果
bnm965321
2020-03-05 12:39:18 +08:00
如果可以像 node 一样在 django 里面搞一个 js runtime。实现 SSR,就可以达到楼主的目的了
kevinguoCN
2020-03-05 18:11:38 +08:00
@bnm965321 那这样做 ,django 本身的 user 认证是不是还能用? 是不是如果用了 vue 必须使用 token 这样的额认证方式了。
hushao
2020-03-05 19:45:25 +08:00
把 vue 当成 jquery 就行了,不要把 vue 当成现代前端框架
bnm965321
2020-03-07 17:01:39 +08:00
@kevinguoCN 看前后端分离的方式了。

如果使用相同域名,不同 PATH 来分割前后端项目:

比如后端: domain.com/backend/ 前端: domain.com/frontend。

这种方式是可以继续使用 django 的 session authentication backend。

否则就用 JWT,单点登录都可以。DRF 本身就支持。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/650033

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX