【问题标题】:Python Jinja2 Google App Engine: getting value from HTML selectPython Jinja2 Google App Engine:从 HTML 选择中获取价值
【发布时间】:2017-04-13 22:18:06
【问题描述】:

我正在使用 Python、Jinja2 和 Google App Engine/Datastore 构建一个网络应用程序。

当尝试为用户实现下拉菜单以向数据存储区提供多个预定义输入之一时,来自 HTML 选择的值不会保存到数据存储区。在用了很长时间寻找答案之后,我仍然没有找到解决方案。 我希望他们给我的价值是用于灯类型的选择。 其他一切工作正常,如果我输入单个值而不是多项选择,它工作正常。我做错了什么或没有做什么?

谁能帮帮我?

我的 HTML:

<form enctype="multipart/form-data" method="post">
            <label>
                <div>Lampens Mærke(skriv ukendt hvis du ikke kender mærket):</div>
                <input type="text" name="brand" value="{{brand}}">
            </label>
            <label>
                <div>Lampens Pæretype(vælg type):</div>
                <select>
                    <option name="lamptype" value="LED">LED</option>
                    <option name="lamptype" value="gloedepare">glødepære</option>
                    <option name="lamptype" value="halogen">halogen</option>
                    <option name="lamptype" value="anden">anden</option>
                </select>
            </label>
            <label>
                <div>Lampens model(eks nummer, type el. lign.):</div>
                <input type="text" name="model" value="{{model}}">
            </label>
            <label>
                <div>Lampens effekt i Watt:</div>
                <input type="number" name="watt" value="{{watt}}">
            </label>
            <label>
                <div>Beskrivelse af lampen(ikke obligatorisk):</div>
                <textarea name="description">{{description}}</textarea>
            </label>
            <!-- <label>
                <div>Billede af lampen(ikke obligatorisk):</div>
                <input type="file" name="image">
            </label> -->
            <div class="error">{{error}}</div>
            <input type="submit">
        </form>

我的主 python 文件中的 Lamp 类:

class Lamp(db.Model):
"""class that creates the basic database structure for Lamp"""
    owner = db.StringProperty(required=True)
    lamptype = db.StringProperty()
    brand = db.StringProperty(required=True)
    model = db.StringProperty(required=True)
    watt = db.IntegerProperty(required=True)
    description = db.TextProperty()
    image = db.BlobProperty()
    booked = db.BooleanProperty()

我用于检索用户输入并将其放入数据存储区的 python 代码:

#Class below handles new instances of LAMP.
class NewLamp(Handler):
"""class that renders a page for creating a new Lamp instance"""
    def get(self):
        if self.user:
            self.render("newlamp.html")
        else:
            error = "Du skal vaere logget ind for at oprette ting!"
            self.render('login.html', error=error)

    def post(self):
        if not self.user:
            return self.redirect("/mypage/login")

        owner = self.user.name
        brand = self.request.get("brand")
        lamptype = self.request.get("lamptype")
        model = self.request.get("model")
        watt = int(self.request.get("watt"))
        # image = self.request.get("image")
        description = self.request.get("description")

        if brand and model and watt:
            l = Lamp(parent = blog_key(), owner = owner, brand = brand, lamptype = lamptype,
            model = model, watt = watt, description = description)
            l.put()
            time.sleep(0.1)
            self.redirect("/mypage/mythings")
        else:
            error = "Du skal udfylde alle obligatorisk felter!"
            return self.render("newlamp.html", brand = brand, model = model,
            watt = watt, description = description, error = error)

【问题讨论】:

  • 首先,您的 HTML 似乎不允许在 SELECT 元素中进行多项选择。您需要添加 MULTIPLE 属性来启用它。其次,如果您确实进行了多项选择,那将如何在您的数据库中表示?
  • 我让自己不清楚。我给用户多种选择,他们可以选择一种。我希望他们只选择一件事。我已经编辑了我的问题以明确这一点。感谢您指出这一点。

标签: python html google-app-engine html-select


【解决方案1】:

您需要像这样向select 标签添加名称属性:

<select name="lamptype">

当您提交表单时,帖子中只会包含具有name 属性的数据。

【讨论】:

  • 谢谢。我之前试过这个,没有效果。问题是我在另一个函数中对 lamptype 的拼写错误,导致它无法正确写入数据存储。菜鸟失误。非常感谢!
猜你喜欢
  • 2013-03-04
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-06
  • 2015-11-06
  • 2012-08-17
  • 2010-11-08
相关资源
最近更新 更多