如何从Django模板语言中获取表单数据

hwamh0ep  于 2023-05-19  发布在  Go
关注(0)|答案(1)|浏览(184)

我是Django的新手,我目前正在迭代过滤的QuerySet,并使用{{file.filename}}将结果作为字符串发布在我的网站上。我在双击文件名时遇到问题。

$('.file').dblclick(function () {
    $.post('/accounts/download/', $(this).attr('id'));
});

我的HTML是

{% for file in file_info %}
<p id= {{ file.filename }} class='file'>{{ file.filename }}</p>
{% endfor %}

我很困惑这样设置id是否是获取文件名的正确方法。
我的视图接收请求:

def download(request):
    person = request.user.id
    form = Download_Form(request.POST)
    print form
    file_name = form['file_name'].value()
    print file_name
    return render(request, 'main.html')

而下面的打印语句是

<tr><th><label for="id_file_name">File name:</label></th><td><ul class="errorlist"><li>This field is required.</li></ul><input id="id_file_name" maxlength="300" name="file_name" type="text" /></td></tr>

None

我知道我不能将.value()添加到form['file_name'],但我不确定如何检索该文件数据。

y53ybaqx

y53ybaqx1#

您没有将POST变量的名称(即file_name)传递给页面。尝试将该行更改为:

$.post('/accounts/download/', {file_name: $(this).attr('id')});

id属性中使用引号也是一个好主意:

<p id="{{ file.filename }}" class="file">{{ file.filename }}</p>

然后,您可以使用request.POST字典简单地访问file_name。你不需要示例化Django表单:

@csrf_exempt
def download(request):
    ...
    print request.POST.get('file_name')
    ...

相关问题