【问题标题】:How do I pass url parameter to form value?如何将 url 参数传递给表单值?
【发布时间】:2011-06-13 17:37:09
【问题描述】:

表单有这个隐藏字段

<input type="hidden" name="dir_type" value="tshirt">

url参数是

/dir?type=tshirt
/dir?type=books
/dir?type=posters

等等。

现在我对value="tshirts" 进行了硬编码,但如何获取相关页面的参数?

我发现了几个页面like this 处理类似的主题,但我不明白这是如何做到的。

感谢您的帮助。

更新

answer by systempuntoout 完美运行,但我决定不使用模板来解决问题。对于任何有类似问题的人,将 url 参数传递给这样的表单效果很好:

<form name="submit_form" action="/directorysubmithandler" method="post" onSubmit="return validate_form()">
title: <input type="text" name="title" size=50><br />
url: <input type="text" name="url" size=50><br />
<input type="hidden" name="dir_type" value="%s")>
<input type="submit" value="submit">
</form>""" % self.request.get("type"))                      

【问题讨论】:

  • 是不是要设置隐藏表单字段的值取决于URL?如果是,您可以使用 javascript 解析 location.href 并设置表单字段值。但我认为最好在服务器端生成正确的 html,其中包含隐藏字段的值。
  • @Stipa:“但我认为最好在服务器端生成正确的 html,其中包含隐藏字段的值。”我该怎么做呢?谢谢!
  • 服务器端有什么平台?你如何为 html 页面提供服务器?
  • @Stipa:我正在使用带有 Python 的 Google App Engine。 html 页面在一个文件夹中,在配置文件中我指明了哪个目录。
  • 你必须让页面动态服务。接下来你可以检查一下:code.google.com/appengine/docs/python/gettingstarted/…

标签: python html google-app-engine forms


【解决方案1】:

a.type 值传递给视图:

class Directory(webapp.RequestHandler):
    def get(self):
       ....
       merchandise_type = self.request.get("type", "")
       items = Item.all()
       items.filter("type =", merchandise_type)
       path = os.path.join(os.path.dirname(__file__), 'dir_details.html')
       self.response.out.write(template.render(path,{'type':merchandise_type}))

b.type 值添加到隐藏字段:

<input type="hidden" name="dir_type" value="{{ type }}">

c. 在您的 post 处理程序中获取 dir_type 值:

class DirectorySubmitHandler(webapp.RequestHandler):
    def post(self):
        user = users.get_current_user()
        merchandise_type = self.request.get("dir_type", "")
        dir_type = merchandise_type
        if user:
            item = Item()
            item.title = self.request.get("title")
            item.url = self.request.get("url")
            item.type = self.request.get("dir_type")
            item.user_who_liked_this_item = user
            item.put()
            self.redirect("/dir?type=%s" %
self.request.get("dir_type"))
        else:
            self.redirect(users.create_login_url(self.request.uri)) 

【讨论】:

  • @systempuntoout:我没有使用模板。如果我在表单值中添加“类型”,显然它会重定向到 /dir?type=type。这是我不明白的。如何在没有模板的情况下做到这一点?
  • 没有模板,你必须通过 Javascript 来完成,就像你链接到的问题一样。
  • @Spacedman:也许我不明白这一点,但获取 url 参数没有问题(就像 javascript 那样)。我想在 DirectorySubmitHandler 中使用保存在 Directory 处理程序中的 url 参数。如果我尝试在另一个类中使用一个类中定义的变量,Python 会给出未定义的全局名称错误。谢谢。
  • @systempuntoout:感谢您的回答。我创建了一个新的处理程序来使用模板执行此操作,但到目前为止我没有任何运气;模板打印为文本。我试图弄清楚如何解决这个问题。抱歉回复晚了。
  • @systempuntoout:好的,我添加了一个没有使用模板的解决方案更新。我意识到在模板中使用 {{ type }} 等同于在脚本中使用字符串格式。谢谢你的线索。
猜你喜欢
  • 2020-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
  • 2015-07-10
  • 1970-01-01
  • 2015-12-10
相关资源
最近更新 更多