我想獲得絕對路徑所有installed_apps在「setting.py」。在Django路徑應用程序
app_list = [ app for app in Myproject.settings.INSTALLED_APPS ]
我列出的應用程序,但我怎麼能得到絕對路徑所有人。
謝謝。
我想獲得絕對路徑所有installed_apps在「setting.py」。在Django路徑應用程序
app_list = [ app for app in Myproject.settings.INSTALLED_APPS ]
我列出的應用程序,但我怎麼能得到絕對路徑所有人。
謝謝。
今天我解決了我的問題。我寫了這段代碼,它的正常工作。對於有限的名稱類,我找到了「models.Model」固有的類的名稱。你可以改變它並享受它。這個代碼可以找到模塊的深度1。它可以改變。
app_list = [app for app in training.settings.INSTALLED_APPS if "task" in app]
for module in app_list:
module1 = __import__(module)
temp = module1.__path__
files_path = [temp[0] + os.sep + files_name for files_name in os.listdir(temp[0]) if
os.path.splitext(files_name)[1] == ".py"]
p = re.compile(r'class\s*\w*\s*\(models.Model\):')
for file in files_path:
infile = open(file)
text = infile.read()
all_class = p.findall(text)
print [class_name[6:][:-15] for class_name in all_class]
我忘記了。此代碼在應用程序「任務」中找到名稱類。 – vahid 2012-08-08 07:32:02
根本不可能做到你想要的。我的意思是你可以在那裏得到差不多,但是沒有真正的功能,特別是Python沒有區分類,方法和變量。它們都被視爲模塊的屬性。
首先,INSTALLED_APPS
是一個字符串元組。因此,爲了得到任何有用的信息,你將不得不加載它們作爲模塊:
for app in settings.INSTALLED_APPS:
module = __import__(app)
然後,一旦你有實際的模塊,你可以調用它的dir
得到它的屬性列表:
for app in settings.INSTALLED_APPS:
module = __import__(app)
print dir(module)
而且,這就要儘可能地去。它將輸出在模塊中設置的所有內容,而不僅僅是類。從這裏,我可以想到的唯一辦法就是除掉所有的東西,但是課程是假定遵循命名約定並尋找以大寫字母開頭的項目。這不完全科學,但這就是你得到的。
你的意思是說url的絕對路徑?或視圖的路徑?另外,一旦你有了信息,你打算如何處理這些信息? – Dave 2012-08-07 17:28:56
我的意思是Url的絕對路徑。我想獲得應用程序中定義的所有類的名稱。 – vahid 2012-08-07 17:57:14