【问题标题】:How to get input from template in view in django如何在 django 视图中从模板获取输入
【发布时间】:2014-02-12 05:48:48
【问题描述】:

我知道这个问题太原始了,但我是 Web 应用程序开发的新手,我仍然没有找到答案。当您想从用户那里接收一些数据时,例如用户想在这样的模板中购买的产品数量:

form action="/pay/" method="POST">
    {% csrf_token %}

    <label for="pid">Book ID</label>  
    <input type="text" name="pid" value={{pid}} />
    <br/>
    <label for="sid">Seller ID</label>
    <input type="text" name="sid" value={{sid}} />
    <br/>    
    <input type="hidden" name="success_url" value="http://localhost:8000/payment/success" />
    <input type="hidden" name="cancel_url" value="http://localhost:8000/payment/cancel"  />
    <input type="hidden" name="error_url" value="http://localhost:8000/payment/error"  />
    <p>Checksum test: {{checksum}}</p>
    <input type="text" name="checksum" value={{checksum}}/>
    </br>
    <label for="id_amount">Please enter the number of products you would like to buy </label>
    <input type="text" id="id_amount" name="amount" value=""/>
    <input type="submit" value="Accept payment" />
</form>

您如何在视图中读取该输入?例如,如何打印该输入?

我的看法是这样的:

def get_payment_detail(request, pid, sid):    
    checksum = Payment().calc_checksum()   
    return render_to_response('payment/payment.html', RequestContext(request, {'pid':Payment.pid,
                        'sid':Payment.sid,
                        'amount':Payment.amount,
                        'checksum': checksum                     
                        }))

【问题讨论】:

  • 您错过了 django 的一项美丽功能。使用表单让您的生活更轻松,您可以忘记向表单添加验证。
  • 我实际上是在尝试通过此链接使用它:peachybits.com/2011/09/django-1-3-form-api-modelform-example,但我必须做的事情的顺序有点混乱。我想要做的是有一个向用户显示表单的视图。用户输入一些东西,我得到那个输入并与其他东西一起将它发送到外部服务器。但到目前为止,我完全搞砸了!如果你能帮助我,你会真的很好。
  • 我正在使用您发送给我的链接。这是很不错的!但是,如果我想根据从 HTML 中获得的条目计算校验和并将其添加到表单中,我该怎么做呢?
  • 我的视图如下所示: def pay(request): if request.method == 'POST': form = PaymentForm(request.POST) if form.is_valid(): checksum = PaymentModel() .calc_checksum() myModel = form.save() myModel.checksum = calc_checksum() else: print form.errors else: # 请求是GET form = PaymentForm() return render_to_response('payment/payment.html', {'form ':form})

标签: python django web-applications django-templates django-views


【解决方案1】:

您可以通过 request.POST 访问表单数据。例如:

request.POST['pid']

【讨论】:

  • .. 但你真的应该使用 Django 的表单框架。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-23
  • 2013-06-16
  • 1970-01-01
  • 2016-05-15
  • 2011-11-11
  • 2011-02-10
  • 1970-01-01
相关资源
最近更新 更多