如何在python中将数据从一个文件传递到另一个文件?

时间:2017-11-20 06:24:31

标签: javascript jquery python python-3.x vue.js

我的HTML代码是(ser.html)

<div>
<a v-bind:href="'ser/'+post.name">
{{post.name}}</a>
</div>

我需要将post.name从此文件传递给其他ie。(det.html)

我的views.py是

from django.shortcuts import render

import os
def ser(request):
    return render(request,"ser.html",{});
def det(request):
    return render(request,"det.html",{'name' :name});

我的urls.py是

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^abt', views.abt),
    url(r'^$', views.index),
    url(r'^ser',views.ser),
    url(r'^det',views.det),
    ]

我的det.html有以下代码

<script>

    mounted() {

    var self = this; 

     $.ajax({
                  url: 'post/filter/',
                  data: {
                    category: {{name}},

                  },
                  type: "POST",
                  dataType: 'json',

     success: function (e) { 
      if (e.status == 1) { 
      window.searchContent.vector = e.data;
                    console.log(e);
    }
    }
    });
    </script>

我需要将'name'传递给此det.html类别才能触发ajax请求。但是当我这样做时,我会收到错误。这是我使用python和vue js的项目。有人可以帮帮我吗?

错误是:

missing 1 required positional argument: 'name'

1 个答案:

答案 0 :(得分:1)

view.py文件中,渲染器无法从何处获取name变量。以下是解决此问题的一种方法:您可以将name参数从ser.html传递到后端作为GET参数:

<div>
<a v-bind:href="'searchnew/?name='+post.name">
{{post.name}}</a>
</div>

然后在view.py文件中,获取名称变量:

def det(request):
    name = request.GET.get('name')
    return render(request,"det.html",{'name' :name})

det.html中,它将可用。

如果您想使用POST请求执行此操作,请更改ser.html以运行VueJS函数,如下所示:

<div>
<a v-on:click="funcToPost">{{post.name}}</a>
</div>

在VueJS对象中实现funcToPost方法来执行POST调用,如下所示:

var app = new Vue({
  // ... some code here
  methods: {
    funcToPost: function() {
      // ... some code here
      $.ajax({
        // ... some code here
        data: {
          name: {{name}}
        }
      })
    }
  }
})

在view.py中将request.GET.get('name')更改为request.POST.get('name')

希望这能解决您的问题。祝你好运。