2017-12-22 8 views
0

먼저 내부에서 작업 방법을 이해하지 마십시오, 나는 __init__.py 파일 내부의 변수 및 기능을 가지고 다른 파일의 각 URL에서이 패키지 메소드를 호출하십시오.변수는 모든 __init__.py

from .crud import crud 
@admin.route('/user/', methods=['GET', 'POST']) 
@login_required 
def adminuser(): 
    crud('user') 

from .crud import crud 
@admin.route('/group/', methods=['GET', 'POST']) 
@login_required 
def admingroup(): 
    crud('group') 

항상 항상 user을 인쇄합니까? 또는 crud 메서드와 edit.py 파일 안에 dbname을 인쇄하면 서로 다른 값을 인쇄합니다.

dbname은 crud에서 업데이트되었지만 edit.py 파일에서 새 값을 볼 수 없습니다.

답변

0

비록 당신의 설명이 정말로 혼란 스럽기 때문에 나는 당신을 잘 이해하지 못합니다. 나는이 방법으로 dbname를 인쇄 같아요

# edit.py 
from xxx import dbname 

print(dbname) 
crud(another_value) 
print(dbname) 

을 그리고 당신은 당신이 같은 값을 얻을 찾을 수 있습니다. 그 이유는 from xxx import dbname 일 때 원본 dbname의 로컬 복사본을 얻게되기 때문입니다. dbname 원본을 얻으려면 sys.modules["xxx"].dbname을 사용해야합니다.

+0

내 디자인 패턴이 어긋납니다. 내 질문에 따라 변수를'__init __. py'에 넣고 값을 변경하고 작동하지 않습니다. – TomSawyer

+0

더 명확하게하기 위해 제 질문이 업데이트되었습니다. – TomSawyer

+1

내가 말했듯이,'__init __. py '내부의'print (dbname)'은 당신이 원하는 것을 출력하지만'edit.py'의'print (dbname)'는'dbname' 에서. import *'. 디폴트 값'dbname'이 아닌 'user'를 출력하는 이유가 궁금 할 것입니다. 한 번만 변경된 것 같습니다. 이는'from '에 대해서'edit.py'가 실행되기 때문입니다. import edit' 그리고 현재 로컬 복사본이 생성되었습니다. 'crud ('사용자')'라고 부르는 시간은 처음'crud '라고 부르는 것입니다. '/ group /'에 먼저 접근하려고하면,'user' 대신에'group'이 항상 출력됩니다. – Sraw

관련 문제