【问题标题】:Need to trigger a script accepting Django form Text field values as parameter需要触发接受 Django 表单文本字段值作为参数的脚本
【发布时间】:2018-06-01 13:47:54
【问题描述】:

我对 Django 很陌生。我有一个脚本,我打算为它制作一个 Web APP。 我需要一些值通过 HTML 表单操作方法传递到我的 python 脚本中。并且脚本输出显示在同一页面或不同页面中。 示例脚本:

a={{get-val1-from form}}
b={{get-val2-from-form}}
def add(a,b):
    return (a+b)

我的 HTML 表单如下所示:

<form action="/">
  <fieldset>
    <legend>Input Requirements<br></legend>
    <p>
      <label>Value A:<br></label>
      <input type="text" name="val1" value="">
    </p>
    <p>
      <label>Value B:<br></label>
       <input type="text" name="val2" value="">
    </p>
    <p>
      <button id="Submit" > Analyze
             </button>
    </p>       
    <p>
      <label>Result : <br></label>
      <textarea id="out_string"> {{out_string}}
      </textarea>
  </fieldset>
</form>

我想通过 Django 实现它,请告诉我使用视图模板的方法。提前谢谢..

【问题讨论】:

    标签: python django python-3.x django-forms django-templates


    【解决方案1】:

    在您的 urls.py 中定义您希望从用户那里发送输入的路径。例子

    from app_name import views
    path('answer/', views.answer, name = "ans_url"),
    

    然后在您的 app_name/views.py 中定义如下视图

    def answer (request):
        if request.method == 'POST':
            form = form_name (request.POST)
            if form.is_valid():
                a = form.cleaned_data['A']
                b = form.cleaned_data['B']
                ans = your_function(a, b)
                return render (request, 'ans_template.html', {'ans' : ans})
        else :
            form = form_name()
        return render (request, 'your_template.html', {'form' : form})
    
    def your_function (a, b):
        #Process
        return (a+b)
    

    然后在你的your_template.html中,你可以定义如下形式

    <form action="{% url 'ans_url' %}" method='POST'>
        {% csrf_token %}
        {{ form.as_p }}
        <input type="submit" value="Analyze">
    </form>
    

    如果您仍然感到困惑,最好阅读一次文档。那里解释得非常漂亮。 https://docs.djangoproject.com/en/2.0/topics/forms/

    【讨论】:

      猜你喜欢
      • 2015-09-15
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      • 2022-08-12
      • 2012-01-18
      • 2020-08-31
      相关资源
      最近更新 更多