У меня есть довольно простой проект Django, основанный на проекте из учебника, который я медленно превращаю в свое собственное приложение. Локально работал нормально. Я попытался развернуть его на Heroku, поэтому внес несколько изменений, но локально он по-прежнему работал нормально (я все еще работаю над тем, чтобы заставить его работать на Heroku). Но потом я запустил его еще раз и из ниоткуда я получаю эту ошибку:
Invalid argument: 'C:\\Users\\cusack\\PycharmProjects\\pythonProject\\website\\:\\index.html'
Так что по какой-то причине он добавляет :\\
или \\:
к пути. Я просмотрел settings.py, views.py, urls.py и нигде не могу найти, где я сказал это сделать.
Мой файл urls.py
выглядит (частично) так:
urlpatterns = [
path('', views.index, name='index'),
path('images/random.png',views.my_image,name='randomImage'),
path('admin/', admin.site.urls)
]
И главная страница, и администратор выдают эту ошибку, но «images/random.png» работает нормально.
Для страницы администратора добавляется дополнительный :\\
перед admin\\index.html
.
Мой views.py
для этого индекса тривиален:
def index(request):
return render(request, 'index.html')
Это произошло, когда я играл с DEBUG и ALLOWED_HISTS, хотя изменение их обратно на True и [] не помогло.
Любая идея, откуда это может исходить?
ОБНОВЛЕНИЕ: похоже, причина в этой строке в настройке ШАБЛОНОВ:
'DIRS': os.path.join(BASE_DIR, '../templates'),
Это работало нормально, когда это было:
'DIRS': [BASE_DIR / 'templates'],
но иногда это не работает (я не понимаю, но иногда это работает, в других случаях он говорит, что не знает, как делить строки). Поэтому я не могу изменить его обратно и не могу использовать os. path.join по какой-то причине, потому что он таинственным образом добавляет :\\
по неизвестной причине.
пожалуйста, проверьте, не осталось ли в settings.py что-то вроде этого объявления списка DIRS:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [":"],
...
если да, измените его на
'DIRS': [],
Добавляется в корень пути для html шаблонов. Также может быть в конце PROJECT_ROOT или PROJECT_DIR. Я не уверен, какой из них используется для формирования пути шаблона abs
Я нигде не устанавливаю PROJECT_ROOT или PROJECT_DIR.
Наконец-то разобрался. я заменил
'DIRS': os.path.join(BASE_DIR, '../templates'),
с
'DIRS': [os.path.join(BASE_DIR, 'templates')]
.
Я до сих пор не уверен, почему он какое-то время работал с исходным кодом, и я также не уверен, зачем нужны [ ].
Неа. Я искал везде какие-либо случайные появления двоеточий, и я не видел ни одного.