PythonAnywhere部署DjangoVet项目时遭遇JSONDecodeError求助
解决Django部署到PythonAnywhere时的JSONDecodeError问题
部署Codecademy的DjangoVet最终模块到PythonAnywhere时,error.log中出现如下JSON解析错误:
2023-02-11 07:01:19,598: Error running WSGI application 2023-02-11 07:01:19,599: json.decoder.JSONDecodeError: Expecting ':' delimiter: line 2 column 18 (char 19) 2023-02-11 07:01:19,599: File "/var/www/dollarbi11_pythonanywhere_com_wsgi.py", line 17, in <module> 2023-02-11 07:01:19,600: application = get_wsgi_application() 2023-02-11 07:01:19,600: 2023-02-11 07:01:19,600: File "/home/DollarBi11/.virtualenvs/vet/lib/python3.10/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application 2023-02-11 07:01:19,600: django.setup(set_prefix=False) 2023-02-11 07:01:19,600: 2023-02-11 07:01:19,601: File "/home/DollarBi11/.virtualenvs/vet/lib/python3.10/site-packages/django/__init__.py", line 19, in setup 2023-02-11 07:01:19,601: configure_logging(settings.LOGGING_CONFIG, settings.LOGGING) 2023-02-11 07:01:19,601: 2023-02-11 07:01:19,602: File "/home/DollarBi11/.virtualenvs/vet/lib/python3.10/site-packages/django/conf/__init__.py", line 82, in __getattr__ 2023-02-11 07:01:19,602: self._setup(name) 2023-02-11 07:01:19,602: 2023-02-11 07:01:19,602: File "/home/DollarBi11/.virtualenvs/vet/lib/python3.10/site-packages/django/conf/__init__.py", line 69, in _setup 2023-02-11 07:01:19,603: self._wrapped = Settings(settings_module) 2023-02-11 07:01:19,603: 2023-02-11 07:01:19,603: File "/home/DollarBi11/.virtualenvs/vet/lib/python3.10/site-packages/django/conf/__init__.py", line 170, in __init__ 2023-02-11 07:01:19,603: mod = importlib.import_module(self.SETTINGS_MODULE) 2023-02-11 07:01:19,603: 2023-02-11 07:01:19,603: File "/home/DollarBi11/djangovet/djangovet/settings.py", line 29, in <module> 2023-02-11 07:01:19,604: project_keys = json.loads(k.read()) 2023-02-11 07:01:19,604: 2023-02-11 07:01:19,604: File "/usr/local/lib/python3.10/json/__init__.py", line 346, in loads 2023-02-11 07:01:19,604: return _default_decoder.decode(s) 2023-02-11 07:01:19,604: 2023-02-11 07:01:19,605: File "/usr/local/lib/python3.10/json/decoder.py", line 337, in decode 2023-02-11 07:01:19,605: obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 2023-02-11 07:01:19,605: 2023-02-11 07:01:19,605: File "/usr/local/lib/python3.10/json/decoder.py", line 353, in raw_decode 2023-02-11 07:01:19,605: obj, end = self.scan_once(s, idx)
相关文件代码
1. dollarbi11_pythonanywhere_com_wsgi.py
# +++++++++++ DJANGO +++++++++++ import os import sys # ## assuming your django settings file is at '/home/yourname/mysite/mysite/settings.py' ## and your manage.py is is at '/home/yourname/mysite/manage.py' path = '/home/DollarBi11/djangovet' if path not in sys.path: sys.path.append(path) # os.environ['DJANGO_SETTINGS_MODULE'] = 'djangovet.settings' # ## then: from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
2. settings.py 第26-29行
KEYSDIR = str(BASE_DIR)+"/keys.json" with open(KEYSDIR) as k: project_keys = json.loads(k.read())
3. keys.json 内容
{ "SECRET_KEY" = "XXXX" }
解决方案
问题出在keys.json的语法错误:JSON规范中键值对必须用冒号:分隔,而你用了等号=。修改keys.json内容如下:
{ "SECRET_KEY": "XXXX" }
修改后重启PythonAnywhere上的Django应用即可解决该错误。
内容的提问来源于stack exchange,提问作者Will McGregor
相关产品推荐
相关产品推荐

