将javascript变量发送到django视图 [英] Send a javascript variable to django view

查看:58
本文介绍了将javascript变量发送到django视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在用javascript变量(例如var_url)获取浏览器的当前URL(该URL一直在变化).我有一个Django模型网址.我想使用视图函数 create_url()创建其对象.

I am fetching the current url of the browser (which keeps changing) in a javascript variable (say var_url). I have a django model Url. I want to create its object using a view function create_url().

更早的时候,当我使用表格时,我使用的是 request.POST ['field'] .现在我没有表格,我想传递var_url的值.该怎么办?

Earlier When I used a form, I used request.POST['field']. Now I don't have a form and I want to pass the value of var_url. How can that be done?

这是我使用表单时的视图功能:

This was my view function when I was using a form:

def create_url(request):
if request.method == 'POST':
    text=request.POST['field']
    url_result=Url.objects.get_or_create(
        url_text=text
        )
    return HttpResponse('Url Object Created')

以下是我的表格:

<form name='urlForm' method="post" action="{% url 'create_url'%}" id="create" >
        {% csrf_token %}
        <input type="text" id="myurl" name="field"/>
        <input type="submit" name="submit" value="Submit">
    </form>

现在,我有了这个表单:

Now rather than a form, I have this:

<div id='results'></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script type="text/javascript">
    window.addEventListener('message',function(e){
        results.innerHTML = e.data;
    });
</script>

我想将div标签的内容发送到我的视图函数中.

I want to send the content of div tag to my view function.

推荐答案

您有两种方法-使用 form 和使用 ajax 发送数据.

You have two way - using form and using ajax for sending data.

假设您在js中有名为 result_data 的数据.

Assume that you have data called result_data in js.

通过这种方式,您必须将内部数据更新为表单字段(即,使隐藏的 result_data 字段发送表单数据).

In this way, you have to update your inner data to form field (i.e. make hidden result_data field to send form data).

<form name='urlForm' method="post" action="{% url 'create_url'%}" id="create" >
    {% csrf_token %}
    <input type="text" id="myurl" name="field"/>
    <input type="hidden" name="result_data" value="" id="js_data_input">
    <input type="submit" name="submit" value="Submit">
</form> 

然后添加javascript代码,将 result_data 添加到隐藏的输入值中.也许是这样..(我不擅长javascript,因此请按自己的方式做

Then you add javascript code to add your result_data to your hidden input value. Maybe like this.. (I'm not good at javascript, so make it your own way)

<script>
    $('#js_data_input').val(result_data)
</script>

然后仅使用此数据提交表单.

Then just submit your form with this data.

如果您发送的数据没有提交表单(这意味着不重新加载/退出当前页面),则可以使用 ajax .

If you send your data without submit form (it means that not reload/escape current page), you can use ajax.

使用ajax时,您必须制作其他视图来接收ajax请求.

When using ajax, you have to make other view that receive your ajax request.

如果您不了解ajax,请访问 w3school 或其他网站网站.

If you don't know about ajax, please check w3school or other web site.

这是使用ajax发送 result_data 的示例

This is example for send result_data using ajax

  $.ajax({
    type: "POST",
    url: '/your/path/to/ajax_view/url/',
    data: {
      'result_data': result_data,
      'csrfmiddlewaretoken': '{{ csrf_token }}'
    },
    dataType: "json",
    success: function(response) {
      if (response.result == 'ok') {
        alert(response.message);
      } else {
        alert('Failed');
      }
    }
  })

您必须添加 csrfmiddlewaretoken .否则,您收到403禁止的错误.您可以通过js或仅使用django中的 {{csrf_token}} 来创建csrfmiddlewaretoken.

You have to add csrfmiddlewaretoken. Else, you got 403 forbidden error. You can make csrfmiddlewaretoken by js or just using {{ csrf_token }} from django.

这篇关于将javascript变量发送到django视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆