Если вы попытаетесь запустить это в реплее, вы увидите, что:
>>> BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(os.getcwd()))),
>>> BASE_DIR
('c:\\srv',)
>>> isinstance(BASE_DIR, tuple)
True
>>> os.path.join(BASE_DIR, 'templates')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\ntpath.py", line 84, in join
result_path = result_path + '\\'
TypeError: can only concatenate tuple (not "str") to tuple
>>>
проблема в ,
в конце
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(os.getcwd()))),
^
| this one
, это работает, еслиВы удаляете его:
>>> BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(os.getcwd())))
>>> os.path.join(BASE_DIR, 'templates')
'c:\\srv\\templates'
в Python для создания кортежей используется запятая (хотя многие считают, что это скобки):
>>> 1,2,3
(1, 2, 3)
кортеж из двух элементов:
>>> 1,2
(1, 2)
и кортеж из одного элемента:
>>> 1,
(1,)