【问题标题】:How to pass data from one file to other in python?如何在python中将数据从一个文件传递到另一个文件?
【发布时间】:2017-11-20 06:24:30
【问题描述】:

我的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>

我需要将“名称”传递给这个 det.html 类别才能触发 ajax 请求。但是当我这样做时,我得到了错误。这是我使用 python 和 vue js 的项目。有人可以帮帮我吗?

错误是:

missing 1 required positional argument: 'name'

【问题讨论】:

  • 您需要将数据从后端传递到前端。请参阅此讨论:forum.vuejs.org/t/…
  • 我只是用api
  • 好吧,我把答案放在下面(你的代码没有正确传递变量,后端也没有正确处理)。希望它能解决你的问题。

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


【解决方案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')

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

【讨论】:

  • 怎么才能改成请求POST方式
  • 当我使用 request.POST 方法时没有改变
  • @coder 我没有尝试解决方案,可能有一些拼写错误,但一般解决方案必须涵盖您想要的。最好的!
  • 先生,我还有两个文件。我需要将 'name' 从 ser.html 传递给 det,html
  • 先生,我想您在 ser.html 中提供了相同的发送请求
猜你喜欢
  • 2020-07-10
  • 2015-09-07
  • 1970-01-01
  • 2019-09-08
  • 1970-01-01
  • 1970-01-01
  • 2022-11-01
  • 2017-06-27
  • 1970-01-01
相关资源
最近更新 更多