V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
kevinguoCN
V2EX  ›  问与答

django 和 vue 如何结合?

  •  
  •   kevinguoCN · Mar 5, 2020 · 4872 views
    This topic created in 2247 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

    否则就用 JWT,单点登录都可以。DRF 本身就支持。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5382 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 07:13 · PVG 15:13 · LAX 00:13 · JFK 03:13
    ♥ Do have faith in what you're doing.