2014-10-21 3 views
0

저는 web2py를 처음 사용하고 있으며 기본 사항을 알려 드리고자합니다. 내가 수동 (http://web2py.com/books/default/chapter/29/03/overview#Adding-authentication)터미널에서 web2py 인증 오류가 발생했습니다.

의 지침에 따라거야 내가 web2py 방향으로 소스 web2py의 코드, CD를 다운로드

`>>>`python web2py.py 

는 서버 포트 8000 및 비밀번호로 화면이 나타납니다 .. .i 그것을 입력하고 예상대로 웹 사이트로 나를 데려 오는 서버를 시작하십시오.

나는 web2py 디렉토리로 이동하는 터미널에 다른 탭을 만듭니다. 실행 파이썬

from gluon import * 
from gluon.tools import * 

db = DAL('sqlite://storage.sqlite') 

auth = Auth(db) 

내가 db._uri >>> 또는 >>> db._dbname하지만 인증하려고 할 때 = 인증 (dB) 나는 오류 얻을 때 내 DB 괜찮 :

>>> auth = Auth(db) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "gluon/tools.py", line 1268, in __init__ 
    request = current.request 
AttributeError: 'thread._local' object has no attribute 'request' 

을 I 디렉토리 (인증)이, 제대로 가져온 것 같다하지만 만약 :

>>> dir(Auth) 
['_Auth__get_migrate', '_HTTP', '__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_get_login_settings', '_get_user_id', '_reset_two_factor_auth', 'accessible_query', 'add_group', 'add_membership', 'add_permission', 'archive', 'basic', 'cas_login', 'cas_validate', 'change_password', 'default_messages', 'default_settings', 'define_signature', 'define_tables', 'del_group', 'del_membership', 'del_permission', 'email_reset_password', 'enable_record_versioning', 'get_or_create_key', 'get_or_create_user', 'get_vars_next', 'groups', 'has_membership', 'has_permission', 'here', 'id_group', 'impersonate', 'is_impersonating', 'is_logged_in', 'log_event', 'login', 'login_bare', 'login_user', 'logout', 'navbar', 'not_authorized', 'profile', 'random_password', 'register', 'register_bare', 'request_reset_password', 'requires', 'requires_login', 'requires_membership', 'requires_permission', 'requires_signature', 'reset_password', 'reset_password_deprecated', 'retrieve_password', 'retrieve_username', 'run_login_onaccept', 'table_cas', 'table_event', 'table_group', 'table_membership', 'table_permission', 'table_user', 'update_groups', 'url', 'user_group', 'user_group_role', 'user_id', 'verify_email', 'wiki', 'wikimenu'] 

을하지만, 내 버전은 'DB'를 가지고 does't 것으로 나타났습니다 내 친구는했지만 그 수 있습니다 그녀의 인증 = 인증 때문에 (db)는

이 오류가 발생하는 이유는 무엇이며 어떻게 수정합니까?

답변

1

Auth은 개체가 필요합니다.이 개체는 프레임 워크가 HTTP 요청을 받으면 만들 수있는 web2py 환경에서만 사용할 수 있으며, (2) web2py 셸에서만 사용할 수 있습니다. 단순히 표준 파이썬 쉘에 있거나 파이썬 스크립트/모듈을 web2py 환경 외부에서 실행중인 경우 사용할 수있는 객체는 request입니다. 실제로 Auth을 초기화하려면 response, sessionT 개체가 필요합니다.

> python web2py.py -S myapp/mycontroller -M 

위의 파이썬 셸을 열고 있지만 myapp와의 컨텍스트에서 web2py 환경을 만들 것입니다 : 당신이 파이썬 쉘에서 작업하는 경우

는, 당신의 최선의 선택 대신 web2py 쉘을 열 수 있습니다. -M 플래그는 앱 모델도 실행하도록 알려줍니다. 이 옵션을 사용하면 db을 정의하거나 Auth을 초기화 할 필요가 없습니다. 이러한 객체는 이미 셸 환경에서 사용할 수 있으므로 (응용 프로그램 모델에서 정의 된 경우).

-R 플래그를 사용하여 web2py 환경에서 외부 스크립트를 실행할 수도 있습니다 (자세한 내용은 documentation 참조).

+0

우수한 설명. 대단히 감사합니다. –

관련 문제