Django русские символы в урл проблема
на винде локально работает без проблем.
на сервере. python 3.6 django 3.2
при запросе вида uploads/руское_слово выдает
UnicodeEncodeError at /uploads/тест/file.log
'ascii' codec can't encode characters in position 63-66: ordinal not in range(128)
Request Method: GET
Request URL: http://*/uploads/%D1%82%D0%B5%D1%81%D1%82/file.log
Django Version: 3.2.15
Exception Type: UnicodeEncodeError
Exception Value:
'ascii' codec can't encode characters in position 63-66: ordinal not in range(128)
Exception Location: /usr/lib/python3.6/pathlib.py, line 387, in wrapped
Python Executable: /usr/bin/python3
Python Version: 3.6.9
Python Path:
['/usr/lib/python36.zip',
'/usr/lib/python3.6',
'/usr/lib/python3.6/lib-dynload',
'/home/admin/.local/lib/python3.6/site-packages',
'/usr/local/lib/python3.6/dist-packages',
'/usr/lib/python3/dist-packages',
'*/public_html/crm',
'*/public_html/venv/lib/python3.6/site-packages']
Server time: Sat, 20 Aug 2022 22:37:59 +0300
*/public_html/venv/lib/python3.6/site-packages/django/core/handlers/exception.py, line 47, in inner
response = get_response(request) …
*/public_html/venv/lib/python3.6/site-packages/django/core/handlers/base.py, line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs) …
*/public_html/venv/lib/python3.6/site-packages/django/views/static.py, line 37, in serve
if fullpath.is_dir(): …
/usr/lib/python3.6/pathlib.py, line 1348, in is_dir
return S_ISDIR(self.stat().st_mode) …
/usr/lib/python3.6/pathlib.py, line 1158, in stat
return self._accessor.stat(self) …
/usr/lib/python3.6/pathlib.py, line 387, in wrapped
return strfunc(str(pathobj), *args)
конкретно где ошибки пишет я так понял он как то не правильно урл обрабатывает?
подскажите как вылечить
PS. Еще там ругается если создаю файл на сервере с руским именем.
НО. если запускаю скрипт cli
python manager.py вызов_тестового_скрипта
он исправно создает файл с руским именем.
Проблема когда через браузер. через apache2 wsgi
вообщем перерыл весь инет. куча советов. Но я упорно не мог найти у себя на сервере где у меня конфиг apache wsgi. ТОчнее я нашел, но он пустой. там ничего нет.
Оказалось locale проблема в нем. сделал 2 настройки в конфиге самого апача apache2.conf
LANG=en_US.UTF-8
locale=en_US.UTF-8
и все заработало
помогла эта статья https://github.com/GrahamDumpleton/mod_wsgi/issues/625