django 和 vue 如何结合? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kevinguoCN
V2EX    问与答

django 和 vue 如何结合?

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

    不太懂前端。目前看到比较多的 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     Solana     2835 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 14:17 PVG 22:17 LAX 07:17 JFK 10:17
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86