Портал Python-программистов

Форумы сайта python.su

Вы не зашли.

Объявление

Официальная wiki коммунити: wiki.python.su обсуждение

Официальная джаббер конференция коммунити: pythonua@conference.jabber.ru (всегда 20-35 онлайн участников). Настройки

КОД ОБОРАЧИВАТЬ В ТЕГИ [code][/code]
  • > TurboGears
  • > оптимизировать код примера wiki20 - исключить создание пустой строки.. [RSS Feed]

#1 2008-09-01 14:44:24

qman
Питонер
Зарегистрирован: 2007-07-02
Сообщений: 404
Профиль

оптимизировать код примера wiki20 - исключить создание пустой строки..

Всем привет,
есть пример wiki20 код

Код:

    @expose("wiki20.templates.edit")
    def notfound(self, pagename):
        page = Page(pagename=pagename, data="")
        return dict(page=page)

Когда пользователь пытается открыть несуществующую страницу вики, данный код создает пустую строку в таблице. Но если пользователь не желает создавать страницу об этом слове то он закрывает броузер, тогда в таблице (БД) остается пустая строка.
Подскажите как изменить код, чтобы после переадресации пользователя на страницу редактирования, не создавалась новая пустая строка в таблице?
Иначе создается много пустых строк если пользователь закрывает броузер не заполнив описание страницы.
P.S. Есть мысли: создать новую функцию для создания новой страницы.  Или есть более красивое решение?

Отредактированно qman (2008-09-01 14:46:48)

Неактивен

 

#2 2008-09-02 06:41:24

PooH
Питонер
Откуда: Барнаул
Зарегистрирован: 2006-12-05
Сообщений: 798
Профиль

Re: оптимизировать код примера wiki20 - исключить создание пустой строки..

Ну не создавайте объект в базе пока не заполнено data, а  в шаблон подставляйте пустышку, например так

Код:

    
@expose("wiki20.templates.edit")
def notfound(self, pagename):
    raise turbogears.redirect("/edit", pagename=pagename)

@expose(template="wiki20.templates.edit")
def edit(self, pagename):
    page = dict(pagename=pagename, data="")
    try:
         page['data'] = Page.byPagename(pagename).data
    except SQLObjectNotFound:
         pass
    return dict(page=page)

@expose()
def save(self, pagename, data, submit):
    try:
        page = Page.byPagename(pagename)
    except SQLObjectNotFound:
        page = Page(pagename)
    page.data = data
    turbogears.flash("Changes saved!")
    raise turbogears.redirect("/", pagename=pagename)

Только в шаблоне заменить обращение к свойству объекта, на обращение к элементу словаря. Кстати, действительно неудобно, что SQLObject не дает создать объект в памяти, а сразу постит его в базу

Неактивен

 
  • > TurboGears
  • оптимизировать код примера wiki20 - исключить создание пустой строки.. [RSS Feed]

Board footer

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson

Board footer

Реклама: