我使用的是virtualenv,我想知道settings.py
中的TEMPLATE_DIRS
應該是什麼,例如,如果我在我的項目文件夾的根目錄下創建一個模板文件夾。使用virtualenv時,django settings.py中的TEMPLATE_DIRS的路徑是什麼
回答
您需要指定模板文件夾的絕對路徑。始終使用正斜槓,即使在Windows上也是如此。
例如,如果你的項目文件夾是 「/家/ djangouser /項目/ MyProject的」(Linux)或 'C:\項目\ MyProject的\'(Windows)中,你的TEMPLATE_DIRS是這樣的:
# for Linux
TEMPLATE_DIRS = (
'/home/djangouser/projects/myproject/templates/',
)
# or for Windows; use forward slashes!
TEMPLATE_DIRS = (
'C:/projects/myproject/templates/',
)
或者,您可以使用指定的PROJECT_ROOT變量,並通過將其與模板文件夾的相對路徑進行連接來生成絕對路徑。這具有如下優點:如果將項目複製到其他位置,則只需更改PROJECT_ROOT。您需要導入os模塊,使其工作:
# add at the beginning of settings.py
import os
# ...
TEMPLATE_DIRS = (
os.path.join(PROJECT_ROOT, 'templates/'),
)
的PROJECT_DIR尚未確定...的PROJECT_DIR不是一個變量。其目錄/文件夾「模板」所在的路徑。這應該有幫助
import os
PROJECT_DIR = os.path.dirname(os.path.dirname(__file__))
TEMPLATE_DIRS = os.path.join(PROJECT_DIR, 'templates')
如果您使用的是Django 1.9,建議使用BASE_DIR而不是PROJECT_DIR。
# add at the beginning of settings.py
import os
# ...
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates/'),
)
如果你使用Django較新版本的工作,你可能需要將其添加到DIR列表裏面settings.py下模板。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['[project name]/templates'], # Replace with your project name
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
在web/settings.py中添加它解決了我的一切。希望它也能幫助你。
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
from os.path import join
TEMPLATE_DIRS = (
join(BASE_DIR, 'templates'),
)
這與已發佈的答案有什麼不同?你所做的只是將'join'綁定爲全局的,而不是使用完整的'os.path.join()'拼寫。 – 2017-02-25 13:44:18
當我使用已發佈的答案。我可以得到一個錯誤,說沒有找到BASE_DIR – ninyesiga 2017-02-27 07:43:15
'BASE_DIR'只是一個名字(儘管它看起來像Django 1.9中的項目模板,並且現在定義了名稱,請參閱https://github.com/django/django/blob /master/django/conf/project_template/project_name/settings.py-tpl)。 [使用virtualenv時,django settings.py中TEMPLATE \ _DIRS的路徑是什麼](// stackoverflow.com/a/24706023)使用名稱'PROJECT_DIR'來確保相同的值。 – 2017-02-27 07:46:24
- 1. django中settings.py的相對路徑
- 2. Django的靜態文件和settings.py中的文件路徑
- 3. 我使用pyspark的路徑是什麼?
- 4. 在settings.py中模板文件夾不正確的Django路徑
- 5. Django的1.4(MEDIA_ROOT,STATIC_ROOT,TEMPLATE_DIRS)
- 6. 在Android中,什麼時候使用Uri,什麼時候使用路徑,何時在路徑之前添加`file://?
- 7. 這條路線的路徑是什麼?
- 8. Gruntfile.js路徑中的{{*}}是什麼意思?
- 9. django如何使用virtualenv?
- 10. 什麼是vscode中的參考路徑
- 11. 在Django的settings.py
- 12. 什麼是Android更新項目中的路徑 - 路徑命令
- 13. Django:其中是settings.py尋找進口,爲什麼?
- 14. @AtmosphereHandlerService中的路徑應該是什麼
- 15. @「../ ..」在路徑中的含義是什麼?
- 16. 什麼是圖中的最小路徑?
- 17. 什麼是文件路徑中的Linux
- 18. 什麼是Scene#getStylesheets()中相對路徑的路徑起源?
- 19. Python virtualenv:爲什麼pip仍然在非$ path路徑中查找?
- 20. 模板目錄的路徑在settings.py中不起作用
- 21. 什麼是Java2D中的路徑和子路徑?
- 22. 這種路徑是什麼?
- 23. PyCharm中的路徑問題; VIRTUALENV
- 24. 什麼是路徑//它與/
- 25. 什麼是「規範路徑」?
- 26. 什麼是Assertion.AssertEquals的「升級路徑」?
- 27. 什麼是File.applicationStorageDirectory.resolvePath的物理路徑?
- 28. 如何添加路徑,文件today.html在views.py和settings.py在Django
- 29. 文檔光標的路徑是什麼?
- 30. 默認的Android SDK路徑是什麼?
感謝您的回答。它的說法PROJECT_ROOT沒有爲第二個答案定義。 – weaveoftheride 2012-08-14 17:25:43
我的項目文件夾位於/ Users/andrewwelch/Sites/env /,我想我必須改變這個,如果我把它放到遠程服務器上 – weaveoftheride 2012-08-14 17:27:15
是的,是我的錯。我注意到PROJECT_ROOT不是一個標準變量,並且被我添加到settings.py中,我擡頭看。它基本上像這裏的建議一樣:http://stackoverflow.com/questions/4919600/django-project-root-self-discovorey – eminor 2012-08-14 18:20:14