Хобрук: Ваш путь к мастерству в программировании

Ошибка ссылочного свойства/механизм приложения не отображает страницу

Я смоделировал отношения «один ко многим», когда один пользователь может продавать много вещей.

На странице продажи у меня есть пользовательская информация о пользователе: 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)

продать.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.


Ответы:


1

Ваш метод get должен быть примерно таким:

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

Я также вижу проблемы с отступами. Класс Sell соответствует тому же уровню, что и метод get(). Метод должен быть на один уровень внутри.

07.12.2013

2

только что нашел ошибку. забыл поставить "дб". перед референсным свойством. РЖУ НЕ МОГУ

07.12.2013
Новые материалы

Создание успешной организации по науке о данных
"Рабочие часы" Создание успешной организации по науке о данных Как создать эффективную группу по анализу данных! Введение Это обзорная статья о том, как создать эффективную группу по..

Технологии и проблемы будущей работы
Изучение преимуществ и недостатков технологий в образовании В быстро меняющемся мире технологии являются решающим фактором в формировании будущего работы. Многие отрасли уже были..

Игорь Минар из Google приедет на #ReactiveConf2017
Мы рады сообщить еще одну замечательную новость: один из самых востребованных спикеров приезжает в Братиславу на ReactiveConf 2017 ! Возможно, нет двух других кланов разработчиков с более..

Я собираюсь научить вас Python шаг за шагом
Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..

React on Rails
Основное приложение Reverb - это всеми любимый монолит Rails. Он отлично обслуживает наш API и уровень просмотра трафика. По мере роста мы добавляли больше интерактивных элементов..

Что такое гибкие методологии разработки программного обеспечения
Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...