Witamy w repozytorium strony internetowej Matematycznego Internetowego Koła Olimpijskiego. Strona jest napisana za pomocą frameworku Django w języku Python.
Aby uruchomić projekt lokalnie, należy wykonać następujące kroki:
- Sklonuj repozytorium:
git clone https://github.com/MIKOmath/MIKOprod
- Utwórz wirtualne środowisko (venv):
- Windows:
python -m venv venv
- Linux:
python3 -m venv venv
- Aktywuj wirtualne środowisko:
- Windows:
venv\Scripts\activate.bat
- Linux:
source venv/bin/activate
- Zainstaluj zależności:
- Windows:
python -m pip install -r requirements.txt
- Linux:
python3 -m pip install -r requirements.txt
Aby używać SQLite3, wystarczy utworzyć plik db.sqlite3
w tym samym folderze co plik manage.py
.
Aby użyć PostgreSQL:
- Utwórz nową bazę danych o nazwie
mikodb
:
sudo -u postgres psql
CREATE DATABASE mikodb;
- Skonfiguruj połączenie w pliku
settings.py
:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mikodb',
'USER': 'postgres',
'PASSWORD': DB_PASSWORD,
'HOST': 'localhost',
'PORT': '5432',
}
}
Aby strona działała należy postawić serwer Redis (instrukcję instalacji można znaleźć np. tu: https://pypi.org/project/django-redis/). Można jednak debugować stronę bez Redisa.
Należy zakomentować następujące linijki w pliku settings.py
:
# CACHES = {
# "default": {
# "BACKEND": "django_redis.cache.RedisCache",
# "LOCATION": "redis://127.0.0.1:6379/1",
# "OPTIONS": {
# "CLIENT_CLASS": "django_redis.client.DefaultClient",
# }
# }
# }
#
# SESSION_ENGINE = "django.contrib.sessions.backends.cache"
# CACHE_BACKEND = 'redis_cache.cache://127.0.0.1:6379/1'
# SESSION_CACHE_ALIAS = "default"
Utwórz plik secrets.py w tym samym folderze co plik settings.py:
SECRET_KEY = '4b%nh=m5*7du0gmq2+h4%&wd%=ok#i0_jakiś_długi_token_do_szyfrowania'
DB_PASSWORD = 'hasło do użytkownika postgres w PostgreSQL'
Przed uruchomieniem serwera testowego trzeba utworzyć bazę danych poleceniami makemigrations
oraz migrate
.
Aby poprawnie wyświetlać pliki statyczne w środowisku produkcyjnym, trzeba również odpalić "kompresję offline" styli i skryptów.
Warto również utworzyć konto admina.
Windows:
python manage.py makemigrations
python manage.py migrate
python manage.py compress
python manage.py createsuperuser
Linux:
python3 manage.py makemigrations
python3 manage.py migrate
python3 manage.py compress
python3 manage.py createsuperuser
Po wykonaniu tych kroków projekt powinien być gotowy do uruchomienia lokalnie.
python manage.py runserver
Aby zobaczyć listę dostępnych endpointów, wejdź na /api/
. Po zalogowaniu do Django można swobodnie prototypować w przeglądarce.
Produkcyjny dostęp do API powinien być autoryzowany tokenem uzyskanym komendą
python manage.py drf_create_token <username>
Autoryzacja przebiega wtedy poprzez podanie headera:
Authorization: Token <token>