Кто-нибудь может помочь? Я следую учебнику, чтобы сделать базовый сайт блога с помощью Django и PostgreSQL, и я не могу добавить базу данных
Я добавил папку 'templates' в каталог блога, но не могу заставить урлы базы данных Django распознать ее. Я думаю, что мне нужно добавить свой url в файл settings.py, но я понятия не имею, как это сделать.
Когда я пытаюсь запустить сервер, я получаю эту ошибку:
Traceback (most recent call last):
File "/workspace/django-blog/manage.py", line 22, in <module>
main()
File "/workspace/django-blog/manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "/workspace/.pyenv_mirror/user/current/lib/python3.12/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
utility.execute()
File "/workspace/.pyenv_mirror/user/current/lib/python3.12/site-packages/django/core/management/__init__.py", line 363, in execute
settings.INSTALLED_APPS
File "/workspace/.pyenv_mirror/user/current/lib/python3.12/site-packages/django/conf/__init__.py", line 82, in __getattr__
self._setup(name)
File "/workspace/.pyenv_mirror/user/current/lib/python3.12/site-packages/django/conf/__init__.py", line 69, in _setup
self._wrapped = Settings(settings_module)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspace/.pyenv_mirror/user/current/lib/python3.12/site-packages/django/conf/__init__.py", line 170, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gitpod/.pyenv/versions/3.12.1/lib/python3.12/importlib/__init__.py", line 90, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 994, in exec_module
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "/workspace/django-blog/codestar/settings.py", line 91, in <module>
'default': dj_database_url.parse(os.environ.get("DATABASE_URL"))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/workspace/.pyenv_mirror/user/current/lib/python3.12/site-packages/dj_database_url/__init__.py", line 126, in parse
raise ValueError(
ValueError: No support for 'b'''. We support: cockroach, mssql, mssqlms, mysql, mysql-connector, mysql2, mysqlgis, oracle, oraclegis, pgsql, postgis, postgres, postgresql, redshift, spatialite, sqlite, timescale, timescalegis
Я не могу понять проблему.
Сервер работал совершенно нормально, пока я не добавил папку templates. Папка содержит html-файл с шаблоном для записей блога, который был предоставлен в учебнике, который также предполагает, что когда я добавляю:
from django.shortcuts import render
from django.views import generic
from .models import Post
# Create your views here.
class PostList(generic.ListView):
queryset = Post.objects.all()
template_name = "post_list.html"
в файл views.py, сервер должен отобразить пост, но в этот момент я получаю ошибку в терминале.
Я пытался добавить каталог templates/ в базы данных в настройках, но я не знаю правильного формата для этого. Я даже спрашивал у ChatGPT, но даже он, похоже, в тупике, возможно, потому что я не представляю, о чем я должен спрашивать.
Судя по приведенному вами описанию ошибки, проблема заключается в DATABASE_URL
в файле .env. Чтобы заставить его работать,
- проверьте работу postgress и запустите
sudo systemctl status postgresql
(linux).обязательно создайте базу данных.
psql
CREATE DATABASE yourdatabase;
CREATE USER youruser WITH PASSWORD 'yourpassword';
ALTER DATABASE yourdatabase OWNER TO youruser;
- убедитесь, что установлены зависимости для postgress
psycopg2==2.9.9 , psycopg2-binary==2.9.9
проверьте конфигурацию postgress с помощью файла settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': DATABASE_NAME,
'USER': DATABASE_USER,
'PASSWORD': DATABASE_PASS,
'HOST': DATABASE_URL, //'localhost'
'PORT': DATABASE_PORT, // default port '5432'
}
}
.env файл
DATABASE_PORT= '5432'
DATABASE_URL= 'localhost'
DATABASE_NAME = 'yourdatabase'
DATABASE_USER = 'youruser'
DATABASE_PASS = 'yourpassword' ```
It should make connection with database .