Django:从 HTML 中获取 LIST 数据,无需表单或模型

Posted

技术标签:

【中文标题】Django:从 HTML 中获取 LIST 数据,无需表单或模型【英文标题】:Django: Get LIST data from HTML without forms or models 【发布时间】:2018-09-02 15:22:43 【问题描述】:

我有一个包含一系列列表项的 html 页面。我希望能够按下按钮,读取列表中的数据,并进行某种转换。我认为它更像是this example。

但是,这种格式使用名称属性来获取数据,列表或列表项都不能有名称!

我的 HTML:

<form action="% url 'index' %" method="POST">
    % csrf_token %
    <ul id="myList">
        <li id="myId1">First Item</li>
        <li id="myId2">Second Item</li>
    </ul>
    <button type="submit">Submit</button>
</form>

我的蟒蛇:

def index(request):
if request.method == 'POST':
    var = request.POST['myList']
    print(var)
return render(request, "test.html", )

有没有办法获取列表中的项目?

附加信息:

当前输出只是None。 我可以很好地抓取文本框之类的数据,它们是命名项目。 我尝试了其他一些建议,例如var = request.POST.get('myList'),甚至开始处理表单和 模型,但我只能以这种方式获取模型中的数据,而不是&lt;li&gt;

【问题讨论】:

可以打印request.POST的输出吗? 【参考方案1】:

您的表单中必须有带有name 属性的input 标记,才能将任何数据提交到服务器。只是在其中粘贴一些列表项将无济于事 - HTML 表单需要输入。

这样的事情可能对你有用:

<form action="% url 'index' %" method="POST">
    % csrf_token %
    <ul id="myList">
        <li id="myId1">First Item <input type="hidden" name="mylist[]" value="myid1"></li>
        <li id="myId2">Second Item <input type="hidden" name="mylist[]" value="myid2"></li>
    </ul>
    <button type="submit">Submit</button>
</form>

即,在列表中的每个项目中插入一个隐藏的输入,带有 namevalue 属性,这应该会导致 request.POST.getlist('mylist') 中的某些内容可用。

【讨论】:

这正如我所愿,感谢您的反馈!

以上是关于Django:从 HTML 中获取 LIST 数据,无需表单或模型的主要内容,如果未能解决你的问题,请参考以下文章

通过ajax获取django的queryset数据

Django - 从模型中的所有对象中获取第一个属性

django的模板页面里,如何获取一个集合的数据?

django之创建第4-3个项目-访问list数据

jinja2中带有html标签的Django模板

[Python自学] restframework