私は Pyramid を学習しようとしていますが、メッセージ フラッシュを機能させるのに問題があります。私はまったくの初心者ですが、ドキュメントを読み、チュートリアルを行いました。
wikiの作成に関するチュートリアルを行いました(チュートリアルはこちら、コードはこちら)。それはうまく機能し、非常に簡単だったので、私が行ったtodoリストチュートリアルで見たフラッシュメッセージを適用しようとすることにしました(チュートリアルはこちら、完全なコードはページの下部にある単一のファイルにあります)。基本的にtodoリストが作成されると、「新しいタスクが正常に追加されました!」というメッセージとともにページが更新されます。誰かが wiki チュートリアルの wiki 記事を更新するたびに、私はそれをしたいと思っていました。
だから私はドキュメンテーションのセッションセクションを読み直しましたが、本当にこれを行う必要があると言われています:
from pyramid.session import UnencryptedCookieSessionFactoryConfig
my_session_factory = UnencryptedCookieSessionFactoryConfig('itsaseekreet')
from pyramid.config import Configurator
config = Configurator(session_factory = my_session_factory)
次に、コードに追加する必要があります:request.session.flash('New wiki was successfully added!')
しかし、毎回エラーが発生します: Pyramid error: AttributeError: No session factory registered
これが私の機能です(request.session.flash部分を除いて、チュートリアルとまったく同じです):
@view_config(route_name='edit_page', renderer='templates/edit.pt', permission='edit')
def edit_page(request):
name = request.matchdict['pagename']
page = DBSession.query(Page).filter_by(name=name).one()
if 'form.submitted' in request.params:
page.data = request.params['body']
DBSession.add(page)
request.session.flash('page was successfully edited!')
return HTTPFound(location = request.route_url('view_page',
pagename=name))
return dict(
page=page,
save_url = request.route_url('edit_page', pagename=name),
logged_in=authenticated_userid(request),
)
(注:私が間違っていると思うことの1つは、todoの例ではすべてのデータが1つのファイルにありますが、wikiの例ではいくつかのファイルがあります.view.pyファイルにセッションインポートを追加したためですフラッシュメッセージはビュー自体によって生成されています)。
私は何を間違っていますか?助言がありますか?