【问题标题】:Retrieve date data from browser [closed]从浏览器中检索日期数据[关闭]
【发布时间】:2014-01-03 16:38:08
【问题描述】:

我正在做 Web 应用程序,但我无法从浏览器中检索日期值。我选择了日期 01/16/2014。

查询字符串如下所示:

?dd=01%2F16%2F2014

我的代码是:

from django.http import HttpResponse, HttpResponseNotFound 
import cgi, cgitb 

form = cgi.FieldStorage()
def pod_available(request):
    dat = form.getvalue('dd')
    print dat
    return HttpResponse("<html><body>Hello<em>" + str(dat) + "</em></body></html>")

输出:

HelloNone

【问题讨论】:

  • 什么叫pod_availablerequest 是什么类型的对象?
  • 是它的请求对象。它的 python web 应用程序。
  • 但是cgi 脚本没有 request 对象,也没有HttpResponse() 类。您尚未共享所有代码; requestHttpResponse 是从哪里来的?

标签: python django python-2.7 cgi query-string


【解决方案1】:

如果您正在构建 Django 应用程序,您没有使用 CGIforms 变量只会被填充一次,并且永远为空。您也可以删除 cgicgitb 模块导入,它们在这里对您没有用处。

您需要重新阅读Django tutorial;视图的 request 参数包含所有表单变量:

def pod_available(request):
    dat = request.GET['dd']
    print dat
    return HttpResponse("<html><body>Hello<em>" + str(dat) + "</em></body></html>")

request.GET object 是一个字典,保存通过 URL 传入的请求参数。

【讨论】:

  • 天哪...我只是不匹配两个应用程序..谢谢你提醒我。
【解决方案2】:

如果这是一个 Django 应用程序,那么以任何方式使用 CGI 都毫无意义。我假设 pod_available 是通过传递给它的 HttpRequest 对象被调用的,所以如果你想读取请求数据,你必须访问该对象来获取它。

您可以通过访问对象的密钥(在本例中为'dd')来做到这一点:

def pod_available(request):
    dat = request['dd']
    return HttpResponse("<html><body>Hello<em>" + str(dat) + "</em></body></html>")

无论如何,这不是一个 CGI 应用程序,所以不要在其中使用任何 CGI 东西。

【讨论】:

  • 是的.. 我需要一个来自 HTTP 请求的 dd 值。
  • @NikunjGam​​i Uhm,所以……当你使用 request.getvalue('dd') 而不是 form.getvalue('dd') 时,它是否有效?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-12
  • 1970-01-01
  • 2012-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多