【问题标题】:Send only specific value to server in Django仅将特定值发送到 Django 中的服务器
【发布时间】:2013-08-08 18:07:51
【问题描述】:

我有一个这样的html代码:

{% for i, j, k in full_name %}
    {{ i }} {{ j }} 
    <input type="text" name="follow_id" value="{{ k }}" />
    <input type="submit" value="Follow"><br /> <br />   

{% endfor %}

输出如下:

user1 user_id_of_user1 follow_button

user2 user_id_of_user2 follow_button

user3 user_id_of_user3 follow_button

如果我按下 user3 的关注按钮,我只想发送 user3 的 ID,以便我可以像这样在服务器中访问它:

followed_user = request.POST['follow_id'] 
# Process

但是,无论我按下哪个follow_button,我都只得到user1 的用户ID。如何解决这个问题?

【问题讨论】:

  • 您可以尝试在循环中将每个部分包装在其自己的&lt;form&gt; 标记中。
  • 假设有 10000 个用户,那么我应该写 10000 个表单和一万个视图(函数)来处理每个 id?
  • 如果您有 10k 用户,我会在 javascript 中动态创建所有内容,因此您只需传输数据。但待定,我还是有点不清楚你在做什么。这将有助于查看您现在为 3 个左右的用户生成的 html,包括周围的 &lt;form&gt; 标签或标签
  • 我想帮助你。我告诉你我仍然不清楚这个问题,所以查看额外的代码会有所帮助
  • 您的代码错误。您需要您的姓名采用 folow_id[] 形式,以便 POST 数据包含所有输入的数组。在您的情况下,只有每个名称的第一个或最后一个(我不知道)输入被转发到服务器。

标签: javascript python html django templates


【解决方案1】:

这不是 Django 问题,而是 HTML 问题。这是解决方法:每个用户 1 个表单:

{% for i, j, k in full_name %}
    <form action="mydomain.com/mysubmiturl/" method="POST"><!-- Leave action empty to submit to this very same html -->
        {% csrf_token %} <!-- Django server only accept POST requests with a CSRF token -->
        {{ i }} {{ j }} 
        <input type="text" name="follow_id" value="{{ k }}" />
        <input type="submit" value="Follow"><br /> <br />
    </form>
{% endfor %}

注意所有表单都提交到同一个URL,因此同一个视图功能

【讨论】:

    【解决方案2】:

    只要我的 2 美分,我会使用一些 jQuery 来完成这项工作。

    在您的模板中:

    {% for i, j, k in full_name %}
        {{ i }} {{ j }} 
        <a href="#" id="js-follow-{{ k }}" class="follow-button">Follow</a>
    {% endfor %}
    

    然后使用AJAX提交数据:

    $('.follow-button').click(function (e) {
        e.preventDefault();
        var this_id = $(this).attr('id').replace('js-follow-', '');    
    
        $.ajax({
            type: 'POST',
            url: 'path/to/view',
            data: {'follow_id': this_id},
            success: function (resp) {
                // do something with response here?    
            }
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2018-06-01
      • 1970-01-01
      • 2017-02-24
      • 1970-01-01
      • 2021-01-06
      • 2022-01-17
      • 2014-01-16
      • 1970-01-01
      • 2015-08-05
      相关资源
      最近更新 更多