编辑 HTML table 中一行的值

Edit the values from a row in the HTML table

我有一个 table 看起来像这样:

       {% for item in records %}
        <tr>
          <td>
            <form action="{% url 'update_record'%}" method="post">{% csrf_token %}
              <input  type="text" class="title" value="{{ item.title }}" size="20" maxlength="30"  />
              <input type="hidden" value={{ item.id }} name="new_title" />
              <input type="submit" value="edit" />
            </form>
          </td>
          <td>
            <input type="text" class="result" value="{{ item.results }}" size="10" maxlength="20" readonly />
          </td>
        </tr>
        {% endfor %}

两个字段(标题、结果)都已经有了值,但我正在尝试编辑它们的值,然后将新的标题值发送到我的 Django 视图:

@csrf_exempt
def update_record(request):
    # do things with the new title value
    sleep(3)
    return redirect('profile')

这是我的 urls.py ,以防有任何帮助:

    urlpatterns = [url(r'^update_record/', views.update_record, name='update_record'),]

我尝试在 post 和 get 方法之间切换,使用 AJAX 和几乎所有我能找到的相关方法,但似乎没有任何效果。当前代码不会产生任何错误,但我没有在“request.POST”字典中看到字段。

任何方法都将不胜感激,因为此时我不知道该尝试什么,除了分析 Ajax 类!

你快到了。

要使字段出现在 request.POST 词典中,输入字段需要 name 属性。

<form action="{% url 'update_record'%}" method="post">
    {% csrf_token %}
    <input name="item_new_title" type="text" class="title" value="{{ item.title }}" size="20" maxlength="30"  />
    <input name="item_id" type="hidden" value="{{ item.id }}"  />
    <input type="submit" value="edit" />
</form>

这里是您的表单的一个稍微修改过的版本,但是我 added/changed item_new_titleitem_id 输入的 name 属性作为示例。

使用此表单,您应该能够使用它们的 name 属性作为键来获取两个字段的值。

def update_record(request):
    if request.method=='POST':
        item_id = request.POST.get('item_id')
        item_new_title = request.POST.get('item_new_title')
        # do things with the new title value

    return redirect('profile')