vue+django 前后端数据同步

目标:在views.py中,准备好数据后,通过Vue的v-model双向绑定功能在index.html中显示。当数据修改后,点击按钮提交后,以对象的形式向views.py传递并更新后端数据。

总体思路:

  1. views.py用字典存数据
  2. 暴露api的get方法,在页面加载时双向绑定数据
  3. 修改数据提交后,点按钮把数据对象用json字符串传过来
  4. 用simplejson.loads还原对象后,更新字典值

步骤:

  1. 准备数据
class DotDict(dict):
    def __init__(self, *args, **kwargs):
        dict.__init__(self, *args, **kwargs)
        self.__dict__ = self

    def toDotDict(data):
        if isinstance(data, dict):
            for k, v in data.items():
                if isinstance(v, dict):
                    data[k] = DotDict(v)
                    DotDict.toDotDict(data[k])
        else:
            return data

        return DotDict(data)
# 仿真参数字典
pars=DotDict()
pars.n_uav=5
pars.n_jammer=2
pars.n_channel=3
pars.epsilon=0.1
pars.ETA=0.8
pars.GAMMA=0.8
pars.NUM_DIZITIZED=6
pars.NUM_EPISODES=3
pars.MAX_STEPS=2000
pars.PT=0.4
pars.PJ=0.4
pars.sigma=1
  1. 暴露api,用get传数据,post接收数据
    views.py中
def params(request):
    if request.method=='POST':
        new_par=simplejson.loads(request.POST['sim_param'])
        print(new_par['n_uav'])
        pars.update(new_par)
        print(pars.n_uav)

        return JsonResponse({'ret':True})

    if request.method=='GET':
        return JsonResponse(pars)
  1. index中v-model双向绑定
<script>
    var app1=new Vue({
        el:"#sim_params",
        delimiters:["[[","]]"],
        data:{
          sim_params:{}
        },
        mounted:function(){
            this.fetchData();
        },
        methods:{
            fetchData (){
                {#var params=new URLSearchParams();#}
                {#params.append('id',123458);#}
                {#params.append('idd','dede');#}
                axios.get("/uav/api/params/").then(response=>{
                   this.sim_params=response.data;
                }),err=>{
                    console.log(err);
                };
            },
            submit_params:function(event){
                var params=new URLSearchParams();
                params.append('sim_param',JSON.stringify(this.sim_params));
                console.log(params)
                axios.post('/uav/api/params/',params).then(alert('ok'));
            },
        }
    });
</script>
    <div class="field">
      <label>信道数量</label>
      <input type="text" v-model="sim_params.n_channel" placeholder="3">
    </div>
  1. 按钮监听事件
<div class="ui grid centered">
    <button class="ui primary button" v-on:click="submit_params">
        Save
    </button>
</div>
  1. 数据发后台之前,先放到URLSearchParams()中,再JSON.stringify字符串化,再用axios.post发给后台
  2. 后台用simplejson.loads变对象后,再更新字典数据
    new_par=simplejson.loads(request.POST[‘sim_param’])
    pars.update(new_par)
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python+Vue+Django前后分离项目实战,涉及到使用Python语言编写后服务,使用Vue框架构建前界面,并通过Django框架作为API接口实现前后数据交互的方式。在实战项目中也会涉及到数据库设计和调用、权限控制、文件上传等问题的解决。 ### 回答2: Python、VueDjango是现在非常流行的前后开发技术。如果你想学习这些技术,那么前后分离是一个很好的选择。在这个项目中使用Python作为后编程语言,Django作为Web框架,Vue作为前框架。我们可以在这个项目中学习到很多关于前后分离的经验。 首先,前后分离可以让我们更好地组织我们的代码。在一个分离的项目中,我们可以通过明确的接口来分离前和后。这样一来,我们可以专注于开发代码,而不必担心前后之间的交互问题。 其次,前后分离可以使我们更好地实现可重用性。在这个项目中,我们可以编写可重用的Vue组件,并在不同的前页面中使用它们。同样地,我们也可以编写可重用的Django应用程序,并在不同的后点中使用它们。这会使我们的代码更加清晰简洁,也可以提高我们的开发效率。 最后,前后分离可以让我们更好地实现可维护性。在一个分离的项目中,我们可以更轻松地进行单元测试和测试。这可以帮助我们保持代码的质量,并尽早发现和解决潜在的问题。 总之,Python、VueDjango前后分离项目是一个非常好的学习项目。通过这个项目,我们可以从实践中学习如何使用这些技术,并在以后的项目中更好地应用它们。 ### 回答3: Python、VueDjango是目前非常流行的技术栈之一,其中Python和Django主要用于后开发,Vue则是一款流行的前框架。Python和Django的优点在于它们易于学习、可扩展性强、社区活跃,并且可以用于构建各种类型的Web应用程序。而Vue的优点在于它简洁、高效、组件化,并且可以很好地配合其他框架和库使用。 前后分离是一种可以将前和后分别开发的方法,这种方法具有很多优点。首先,可以使开发人员更加专注于各自的领域,减少互相干扰和影响。其次,这种方法可以提高应用程序的可维护性和可扩展性。最后,这种方法还可以提高开发效率,使开发人员能够更加高效地开发应用程序。 在前后分离项目实战中,需要注意以下几点。首先,需要确定应用程序的需求,确定前和后的接口规范。其次,需要使用合适的工具和框架来完成前后的开发任务。对于后开发,可以使用Django的REST框架,这个框架可以很快地构建RESTful API,并且配合数据库使用。而对于前开发,则可以使用Vue框架来开发,Vue可以很好地处理数据和UI逻辑。最后,需要着重测试和调试应用程序,确保应用程序的正确性和可用性。 总的来说,Python、VueDjango是一组非常流行的技术栈,非常适合用于前后分离项目的开发。在开发前需要确定好需求,选择好工具和框架,开发期间需要注重测试和调试,这样才能开发出高质量的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值