Форумы сайта python.su
Вы не зашли.
Всем привет,
есть пример 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)
Неактивен
Ну не создавайте объект в базе пока не заполнено 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 не дает создать объект в памяти, а сразу постит его в базу
Неактивен