V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kevinguoCN
V2EX  ›  问与答

django 和 vue 如何结合?

  •  
  •   kevinguoCN · 2020-03-05 11:41:47 +08:00 · 4209 次点击
    这是一个创建于 1708 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

    否则就用 JWT,单点登录都可以。DRF 本身就支持。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5629 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 01:49 · PVG 09:49 · LAX 17:49 · JFK 20:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.