【问题标题】:Send a javascript variable to django view将 javascript 变量发送到 django 视图
【发布时间】:2023-03-22 17:54:01
【问题描述】:

我在 javascript 变量(比如 var_url)中获取浏览器的当前 url(不断变化)。我有一个 django 模型网址。我想使用视图函数create_url() 创建它的对象。

之前当我使用表单时,我使用了request.POST['field']。现在我没有表单,我想传递 var_url 的值。怎么可能?

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

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>

现在我有这个,而不是一个表格:

<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 标签的内容发送到我的视图函数。

【问题讨论】:

  • 请添加问题代码
  • 添加您的表单和模板
  • @DirkHorsten 我已经添加了代码。请检查更新后的问题。
  • @seuling 请检查更新后的问题。
  • 你要发送什么数据?

标签: javascript django django-forms


【解决方案1】:

您有两种方式 - 使用 form 和使用 ajax 发送数据。

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

首先,使用现有的form

这样,您必须将内部数据更新为表单字段(即隐藏result_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,所以你自己做吧)

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

然后,只需使用这些数据提交您的表单。

其次,使用ajax

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

使用 ajax 时,您必须创建其他视图来接收您的 ajax 请求。

如果您不了解 ajax,请查看w3school 或其他网站。

这是使用 ajax 发送 result_data 的示例

  $.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。

【讨论】:

    猜你喜欢
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 2019-07-03
    • 1970-01-01
    相关资源
    最近更新 更多