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/MIKOsite
- Utwórz wirtualne środowisko (venv):
python -m venv venv
- Aktywuj wirtualne środowisko:
- Windows:
venv\Scripts\activate.bat - Linux:
source venv/bin/activate
- Zainstaluj zależności:
python -m pip install -r requirements.txt
Aby uruchomić projekt w trybie deweloperskim, należy ustawić w pliku settings.py:
DEBUG = TrueUstawienie to jest szczególnie polecane podczas pierwszego uruchomienia projektu lokalnie. Pamiętaj, aby nie używać tego ustawienia w środowisku produkcyjnym oraz nie dodawać go do repozytorium.
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 psqlCREATE 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',
}
}Domyślnie projekt nie używa Redisa, jeśli debug=True w settings.py.
Aby używać Redisa (zalecane w środowisku produkcyjnym), należy postawić serwer Redis
(instrukcję instalacji można znaleźć np. tu: https://pypi.org/project/django-redis/)
oraz skonfigurować połączenie 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"Aby używać Redisa z debug=True, należy ustawić w settings.py:
USE_REDIS_WITH_DEBUG = TrueUtwó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'
Jeśli używasz PostgreSQL, dodaj również:
DB_PASSWORD = 'hasło użytkownika postgres w PostgreSQL'
Przed uruchomieniem serwera testowego należy utworzyć bazę danych poleceniem migrate.
Następnie należy wygenerować automatyczne pliki statyczne oraz wykonać kompresję django-compressor.
Zanim przejdziesz dalej, upewnij się, że w settings.py jest ustawione (o ile chcesz używać tego ustawienia):
DEBUG = Truepython manage.py migrate --noinput
python manage.py collectstatic --noinput
python manage.py compress --force
Przed pierwszym uruchomieniem warto utworzyć konto administratora:
python manage.py createsuperuser
Po wykonaniu tych kroków projekt jest 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>