0

我的项目基于 Pyramid。

Pyramid 的默认脚手架非常简单:view.py, models.py, 等等。

我创建了一些目录来替换它们。例如:

view.py--> 查看目录

models.py--> 模型目录

然后我创建一个名为login.py

from pyramid.httpexceptions import HTTPForbidden
from pyramid.response import Response
from pyramid.view import view_config
import logging

from ..model import (
    DBSession,
    DynUser,
    )

log = logging.getLogger(__name__)

def find_user(account):
    #user = None
    try:
        user = DBSession.query(DynUser).filter(DynUser.username==account).first()
        #one = DBSession.query(MyModel).filter(MyModel.name=='one').first()
    except ValueError:
        #log.warning("invalidate id %s input." % request.matchdict['id'])
        log.warning("invalidate id %s input.")
    except Exception:
        log.error("database error!")

    if not user:
        return HTTPForbidden()

    return dict(user=user)

我已经导入了 DBSession。为什么我仍然会收到此错误?

tip
--------------------------------------------------------------------------
Undefined variable from import: DBSession

Undefined variable from import: DBSession

DBSession Found at: dyncms.model.meta


DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
4

2 回答 2

0

你没有提到它,但我假设你搬到models.pymodel/__init__.py.

from ..modelslogin.py在位于子目录中时才有效(例如login/login.py)。如果不是这种情况,您应该使用from .models import.

于 2012-10-09T09:24:31.220 回答
0

在模型目录中

__init__.py 
# package
from .meta import DBSession
from .meta import Base
from .book import Book

meta.py
from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy.orm import (
    scoped_session,
    sessionmaker,
    )

from zope.sqlalchemy import ZopeTransactionExtension

DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
Base = declarative_base()
于 2012-10-10T13:04:03.813 回答