【问题标题】:Python Django dropdown form and trigger python scriptPython Django 下拉表单和触发 python 脚本
【发布时间】:2019-11-27 20:01:49
【问题描述】:

Django 和 Python 的新手。 创建带有下拉列表的导航栏(通过 form.py 填充) 用户选择项目后,将显示另一个下拉列表。 用户从列表中选择项目并点击提交后,喜欢触发 python 脚本获取数据并以表格格式填充 卡在执行 python 脚本

以下代码: 视图.py:

class StatusLayoutPageView(FormView):
    template_name = "status_layout.html"
    form_class = SelectLocationForm

    def form_valid(self, form):
        # This method is called when valid form data has been POSTed.
        # It should return an HttpResponse.
        return super().form_valid(form)

class DataView(FormView):
    ## This will contain the output 
    template_name = "data.html"
    form_class = SelectLocationForm

这是models.py

LOCATIONS = (
    ('DC1', 'DC1'),
    ('DC2', 'DC2'),
)
class SelectLocationForm(forms.Form):
    error_css_class = 'error'
    location = forms.ChoiceField(choices=LOCATIONS, required=True)
    class Meta:
        model = SelectLocation

这是模板:

<form method="post">{% csrf_token %}
    <select name="location">
      <option selected>Select Location</option>
      {% for val in form.location %}
      <option value="{{ val }}"></option>
      {% endfor %}
    </select>
  <p>
  <button align="center" class="button execute" name="submit" value="submit">GO TO</button>
</form>

遇到的问题是如何根据加载页面来判断用户选择了哪个值。也可以通过 onclick 按钮将数据传递给 python 脚本以通过数据运行并以表格格式输出。

预期输出: 首页: 导航栏:主页 |日志 |选择应用程序['查找','删除'] 用户选择FIND 已分页:带导航栏主页 |日志 |查找 ['查找','删除'] 另一个下拉菜单: 选择位置 ['DC1'、'DC2'、'DC3'] 按钮:SUBMIT 一旦用户点击按钮,它将运行一个python脚本。

【问题讨论】:

    标签: python django drop-down-menu dropdown


    【解决方案1】:

    有几件事需要澄清。您的 Python 仅在服务器上运行。因此,Python 生成的表单不再是实际的 Python。

    您可以使用普通的表单提交将您的数据发布到服务器,然后您需要查看从服务器上的表单 POST 获取值并采取某种措施。

    如果所有内容都包含在 Django 表单中并且页面有提交,则将在点击回车按钮或仅使用 JavaScript 发布页面数据时发布。请记住,这将刷新您的整个应用程序,因此在您的情况下,您需要考虑仅使用 JavaScript 对您的服务器进行异步调用。您将获得对这些调用的响应(通过 JavaScript)并使用 JavaScript 更新 HTML,而无需刷新页面。否则,您将需要查看会话管理,以避免在每次刷新或提交页面时将所有用户更改吹走。

    【讨论】:

    • 你好克里斯,感谢您的解释。为了从列表中选择项目并执行 python 脚本,我应该编辑 view.py 吗?换成 HTML 文件 &lt;form method="post" action = "{% url 'data' %}"&gt; {% csrf_token %} 查看代码:``` def data(request): ```
    猜你喜欢
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    相关资源
    最近更新 更多