【问题标题】:Reference property error/app engine won't render page引用属性错误/应用引擎不会呈现页面
【发布时间】:2013-12-07 10:34:02
【问题描述】:

我模拟了一对多的关系,一个用户可以销售很多东西。

在销售页面上,我让用户输入用户信息:first_name、last_name、email

以及他们想要出售的商品信息:item_name、item_price、item_tag。

我没有使用参考财产权吗?当 localhost 运行时,页面是空白的。

class UserModel(db.Model):
    first_name = db.StringProperty(required = True)
    last_name = db.StringProperty(required = True)
    email = db.StringProperty(required = True)

class SellModel(db.Model):
    user = ReferenceProperty(UserModel, collection_name = "sells")

    item_name = db.StringProperty(required = True)
    item_price = db.StringProperty(required = True)
    item_tag = db.StringProperty(required = True)

class Sell(Handler):
def get(self):
    self.render("sell.html")

def post(self):
    item_name = self.request.get('item_name')
    item_price = self.request.get('item_price')
    item_tag = self.request.get('item_tag')

    first_name = self.request.get('first_name')
    last_name = self.request.get('last_name')
    email = self.request.get('email')


    if item_name and item_price and item_tag and first_name and last_name and email:

        user = UserModel(key_name = "user", 
                first_name = first_name, last_name = last_name, 
                email = email)
        user.put()


        sell = SellModel(user = user, item_name = item_name, item_price = item_price, item_tag = item_tag)
        sell.put()

        stat = "your item has been recorded"
        self.render("sell.html", stat = stat)

    else:
        error = "make sure you fill out every box"
        self.render("sell.html", 
                    item_name = item_name, item_price = item_price, item_tag = item_tag,
                    first_name = first_name, last_name = last_name,
                    email = email, error=error)

sell.html:

<form method="post">
        <label>item name</label>
        <input type="text" name="item_name" value="{{item_name}}">


        <label>item price</label>
        <input type="text" name="item_price" value="{{item_price}}">


        <label>tag</label>
        <input type="text" name="item_tag" value="{{item_tag}}">


        <label>first name</label>
        <input type="text" name="first_name" value="{{first_name}}">


        <label>last name</label>
        <input type="text" name="last_name" value="{{last_name}}">


        <label>email</label>
        <input type="text" name="email" value="{{email}}">

    <div><input type="submit" value="Okay"></div>
    <div class = "stat">{{stat}}</div>
    <div class="error">{{error}}</div> 
</form>

当我删除时

user = ReferenceProperty(User, collection_name = "sells")

只要提交用户并出售,页面就会显示。这行是什么弄乱了页面?

编辑: 缩进来自复制和粘贴,并且在代码中。在我继承的 Handler 类中,我有

def render(self, template, **kw):
    self.write(self.render_str(template, **kw))

所以问题不应该出在 get 方法中。

【问题讨论】:

    标签: python google-app-engine web-applications jinja2


    【解决方案1】:

    你的 get 方法应该是这样的:

    def get(self):
        f=open('sell.html','r')
        sourceHtml = unicode(f.read(),errors='ignore')
        f.close()
        self.response.write(sourceHtml)
    

    我还看到了缩进问题。 Sell 类与 get() 方法对齐到同一级别。方法内部应该是一层。

    【讨论】:

      【解决方案2】:

      刚刚发现错误。忘了放“db”。在 ReferenceProperty 之前。哈哈

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-07
        • 1970-01-01
        • 2019-02-26
        • 1970-01-01
        • 2014-07-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多