Найти - Пользователи
Полная версия: оптимизировать код примера wiki20 - исключить создание пустой строки..
Начало » Pyramid / Pylons / TurboGears » оптимизировать код примера wiki20 - исключить создание пустой строки..
1
qman
Всем привет,
есть пример wiki20 код
    @expose("wiki20.templates.edit")
def notfound(self, pagename):
page = Page(pagename=pagename, data="")
return dict(page=page)
Когда пользователь пытается открыть несуществующую страницу вики, данный код создает пустую строку в таблице. Но если пользователь не желает создавать страницу об этом слове то он закрывает броузер, тогда в таблице (БД) остается пустая строка.
Подскажите как изменить код, чтобы после переадресации пользователя на страницу редактирования, не создавалась новая пустая строка в таблице?
Иначе создается много пустых строк если пользователь закрывает броузер не заполнив описание страницы.
P.S. Есть мысли: создать новую функцию для создания новой страницы. Или есть более красивое решение?
PooH
Ну не создавайте объект в базе пока не заполнено 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 не дает создать объект в памяти, а сразу постит его в базу
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB