Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 1, 2008 13:44:24

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

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

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

    @expose("wiki20.templates.edit")
def notfound(self, pagename):
page = Page(pagename=pagename, data="")
return dict(page=page)
Когда пользователь пытается открыть несуществующую страницу вики, данный код создает пустую строку в таблице. Но если пользователь не желает создавать страницу об этом слове то он закрывает броузер, тогда в таблице (БД) остается пустая строка.
Подскажите как изменить код, чтобы после переадресации пользователя на страницу редактирования, не создавалась новая пустая строка в таблице?
Иначе создается много пустых строк если пользователь закрывает броузер не заполнив описание страницы.
P.S. Есть мысли: создать новую функцию для создания новой страницы. Или есть более красивое решение?



Отредактировано (Сен. 1, 2008 13:46:48)

Офлайн

#2 Сен. 2, 2008 05:41:24

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

оптимизировать код примера 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 не дает создать объект в памяти, а сразу постит его в базу



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version