django - Django admin 自定义表单提交强制从下拉列表中选择操作
问题描述
我想将自定义表单添加到 django 管理站点更改列表视图。一旦我添加了一个提交按钮,它就会要求从下拉列表中选择自定义操作。我创建了一个具有唯一 ID 的单独表单。它仍然寻找一个动作被选择。我该如何克服呢?
这是我的模板代码。
{% extends "admin/change_list.html" %}
{% load staticfiles %}
{% block content %}
<div align="right">
<form id="generate-form" method="POST">
{% csrf_token %}
<select>
<option value="">-- section name --</option>
{% for section in sections %}
<option value="{{ section.short_name }}">{{ section.name }}</option>
{% endfor %}
</select>
<input type="text" name="from_date" class="vTextField" placeholder="from">
<input type="text" name="to_date" class="vTextField" placeholder="to">
<input type="submit" value="Generate" class="default" id="gen-schedules"
style="margin:0; height: 30px; padding-top: 5px;">
<form>
</div>
{{ block.super }}
{% endblock %}
解决方案
假设你复制/粘贴而不更改它,你有这个,因为表单标签没有正确关闭:<form>
应该替换为</form>
:
...
</form>
</div>
{{ block.super }}
{% endblock %}
因为它没有关闭,所以浏览器认为它与下一个表单相同,即操作表单。
为避免此类问题,我建议尽可能依靠 Django 的表单为您生成正确的 HTML。为了帮助处理复杂的布局,django-crispy-forms是一个非常有用的优秀库。
推荐阅读
- javascript - Javascript 类型错误 - “侦听器”参数必须是函数类型。接收到的类型对象
- python - 在 Tkinter 中使用 Pyautogui 进行自动化时,窗口会被调整大小并放错位置
- github - 对于 GitHub Dependabot,dependabot.yml 是强制性的吗?
- python - 使用数据块更改文件名(DBFS 实用程序)
- ios - 找不到目标“x86_64-apple-ios-simulator”的模块“XXXX”;在 Swift 项目中找到:arm64、arm64-apple-ios-simulator?
- node.js - 不推荐使用获取 body-Parser 警告在 Vs 代码中并且无法获取 Body 尝试使用内置的 express
- c++ - C++ clang ld:未知选项:--copy-dt-needed-entries 错误
- typo3 - TYPO3 TCA 和选择表格
- python - 我无法捕捉到 sys.exit()
- sdk - OTT 解决方案如何将他们的应用程序插入 ISP 机顶盒