Найти - Пользователи
Полная версия: Вопрос по примеру QuickWiki
Начало » Pyramid / Pylons / TurboGears » Вопрос по примеру QuickWiki
1
qman
Всем привет,
в документации на pylons
http://pylonshq.com/docs/en/1.0/tutorials/quickwiki_tutorial/#the-model
есть пример:
class Page(Base):
__tablename__ = 'pages'
title = Column(Unicode(40), primary_key=True)
content = Column(UnicodeText(), default=u'')
немного ниже данный класс создается от другого предка
class Page(object):

def __init__(self, title, content=None):
self.title = title
self.content = content

def __unicode__(self):
return self.title

__str__ = __unicode__

orm.mapper(Page, pages_table)
Почему по разному описаны классы? Оба описания являются рабочими?
P.S. сильно не пинайте. Плохо английский понимаю…
qman
Позвольте еще спросить:
по ссылке
http://pylonshq.com/docs/en/1.0/tutorials/quickwiki_tutorial/#application-setup
есть две строки:
meta.metadata.bind = meta.engine
model.metadata.create_all(checkfirst=True)
их в какой файл необходимо вставить
model/__init__.py
или
config/environment.py
?
qman
сделал
from quickwiki.model import init_model, meta
log = logging.getLogger(__name__)

# disable docutils security hazards:
# http://docutils.sourceforge.net/docs/howto/security.html
SAFE_DOCUTILS = dict(file_insertion_enabled=False, raw_enabled=False)
wikiwords = re.compile(r"\b([A-Z]\w+[A-Z]+\w+)", re.UNICODE)




def init_model(engine):
"""Call me before using any of the tables or classes in the model"""
Session.configure(bind=engine)
meta.metadata.bind = engine
model.metadata.create_all(checkfirst=True)
получаю
C:\project\qw\QuickWiki>paster setup-app development.ini
Running setup_config() from quickwiki.websetup
Traceback (most recent call last):
File "c:\Python25\Scripts\paster-script.py", line 8, in <module>
load_entry_point('pastescript==1.7.3', 'console_scripts', 'paster')()
File "c:\python25\lib\site-packages\pastescript-1.7.3-py2.5.egg\paste\script\c
ommand.py", line 84, in run
invoke(command, command_name, options, args[1:])
File "c:\python25\lib\site-packages\pastescript-1.7.3-py2.5.egg\paste\script\c
ommand.py", line 123, in invoke
exit_code = runner.run(args)
File "c:\python25\lib\site-packages\pastescript-1.7.3-py2.5.egg\paste\script\a
ppinstall.py", line 68, in run
return super(AbstractInstallCommand, self).run(new_args)
File "c:\python25\lib\site-packages\pastescript-1.7.3-py2.5.egg\paste\script\c
ommand.py", line 218, in run
result = self.command()
File "c:\python25\lib\site-packages\pastescript-1.7.3-py2.5.egg\paste\script\a
ppinstall.py", line 456, in command
self, config_file, section, self.sysconfig_install_vars(installer))
File "c:\python25\lib\site-packages\pastescript-1.7.3-py2.5.egg\paste\script\a
ppinstall.py", line 598, in setup_config
mod.setup_app, command, filename, section, vars)
File "c:\python25\lib\site-packages\pastescript-1.7.3-py2.5.egg\paste\script\a
ppinstall.py", line 612, in _call_setup_app
func(command, conf, vars)
File "C:\project\qw\QuickWiki\quickwiki\websetup.py", line 12, in setup_app
load_environment(conf.global_conf, conf.local_conf)
File "C:\project\qw\QuickWiki\quickwiki\config\environment.py", line 50, in lo
ad_environment
init_model(engine)
File "C:\project\qw\QuickWiki\quickwiki\model\__init__.py", line 24, in init_m
odel
meta.metadata.bind = engine
AttributeError: 'module' object has no attribute 'metadata'
Андрей Светлов
Для начала почитайте документацию по sqlalchemy, а потом уже крутите ее к pylons.
qman
Андрей Светлов
Для начала почитайте документацию по sqlalchemy, а потом уже крутите ее к pylons.
Спасибо за совет. Подскажите пожалуйста возможно ли pylons использовать для доступа к базам данным без ORM sqlalchemy? Или тогда лучше изучать другой фрэймворк? Если другой то какой?
Кстати в комментариях упоминается что код в учебнике устарел
http://pylonshq.com/docs/en/1.0/tutorials/quickwiki_tutorial/
Исправления опубликованы тут
http://spandexbob.posterous.com/pylons-tutorial
P.S. В последних комментариях упоминался фрэймворк Bottle.
Андрей Светлов
http://pylonsproject.org/ + sqlalchemy. Сугубо личное мнение.
qman
Андрей Светлов
http://pylonsproject.org/ + sqlalchemy. Сугубо личное мнение.
Спасибо!
qman
При открытии адреса
http://127.0.0.1:5000/pages/show/FrontPage
Получаю
&#8669; TypeError: show() takes exactly 2 arguments (1 given)
Код как в учебнике, кто нибудь может подсказать почему он требует 2 аргумента (self - это ведь указатель на сам объект)?
class PagesController(BaseController):

def index(self):
c.titles = [page.title for page in self.page_q.all()]
print c.titles
return render('/pages/index.mako')


def __before__(self):
self.page_q = Session.query(Page)

def show(self, title):
page = self.page_q.filter_by(title=title).first()
c.title = title
if page:
c.content = page.get_wiki_content()
return render('/pages/show.mako')
elif wikiwords.match(title):
#c.title = ''
#c.content = ''
return render('/pages/new.mako')
abort(404)
from routes import Mapper

def make_map(config):
"""Create, configure and return the routes Mapper"""
map = Mapper(directory=config['pylons.paths']['controllers'],
always_scan=config['debug'])
map.minimization = False
map.explicit = False

# The ErrorController route (handles 404/500 error pages); it should
# likely stay at the top, ensuring it can always be resolved
map.connect('/error/{action}', controller='error')
map.connect('/error/{action}/{id}', controller='error')
# CUSTOM ROUTES HERE
map.connect('/{controller}/{action}')
map.connect('/{controller}/{action}/{id}')


map.connect('home', '/', controller='pages', action='show',
title='FrontPage')
map.connect('pages', '/pages', controller='pages', action='index')
map.connect('show_page', '/pages/show/{title}', controller='pages',
action='show')
map.connect('edit_page', '/pages/edit/{title}', controller='pages',
action='edit')
map.connect('save_page', '/pages/save/{title}', controller='pages',
action='save', conditions=dict(method='POST'))
map.connect('delete_page', '/pages/delete', controller='pages',
action='delete')

# A bonus example - the specified defaults allow visiting
# example.com/FrontPage to view the page titled 'FrontPage':
map.connect('/{title}', controller='pages', action='show')

return map
qman
Для чайников интересующихся QuickWiki из pylons от чайника

Устанавливаем setuptools из http://pypi.python.org/pypi/setuptools
Устанавливаем
easy_install QuickWiki
Не обязательно устанавливаем yolk
Убеждаемся что QuickWiki установлено
yolk -l
Далее создаем конфиг файл
paster make-config QuickWiki test.ini
создаем базу данных
paster setup-app test.ini

запускаем приложение
paster serve test.ini

исходники искать в
c:\Python25\Lib\site-packages\
P.S. у меня в c:\Python25\Lib\site-packages\QuickWiki-0.1.8dev-py2.5.egg\
P.P.S. профи - сильно не пинайте.
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