[4] Django 3 – instalacja

12 maja 2021 Wyłączono przez Adam [zicherka] Nogły

Zainstalujemy teraz Django czyli Python Web Application Framework.

[1] Zainstaluj potrzebne pakiety.

[root@vlsr01 ~]# dnf install python3-virtualenv

[2] Zainstaluj Django w środowisku Virtualenv. Możesz to wykonać dla dowolnego użytkownika.

[user01@vlsr01 ~]$ virtualenv-3.6 venv
[user01@vlsr01 ~]$ cd ~/venv
[user01@vlsr01 venv]$ source bin/activate
(venv) [user01@vlsr01 venv]$ pip install django==3.0
Collecting django==3.0
Downloading Django-3.0-py3-none-any.whl (7.4 MB)
|████████████████████████████████| 7.4 MB 5.4 MB/s
Collecting asgiref~=3.2
Downloading asgiref-3.3.4-py3-none-any.whl (22 kB)
Collecting sqlparse>=0.2.2
Downloading sqlparse-0.4.1-py3-none-any.whl (42 kB)
|████████████████████████████████| 42 kB 2.3 MB/s
Collecting pytz
Downloading pytz-2021.1-py2.py3-none-any.whl (510 kB)
|████████████████████████████████| 510 kB 5.7 MB/s
Collecting typing-extensions
Downloading typing_extensions-3.10.0.0-py3-none-any.whl (26 kB)
Installing collected packages: typing-extensions, sqlparse, pytz, asgiref, django
Successfully installed asgiref-3.3.4 django-3.0 pytz-2021.1 sqlparse-0.4.1 typing-extensions-3.10.0.0
(venv) [user01@vlsr01 venv]$ django-admin --version
3.0
# wyjście z virtualenv
(venv) [user01@vlsr01 venv]$ deactivate
[user01@vlsr01 venv]$

3. Jeżeli Firewalld jest uruchomiony to zezwól na ruch na porcie [8000/tcp] z konta [root].

[root@vlsr01 ~]# firewall-cmd --add-port=8000/tcp --permanent
[root@vlsr01 ~]# firewall-cmd --reload

4. Stwórz testowy projekt.

[user01@vlsr01 ~]$ cd ~/venv
[user01@vlsr01 venv]$ source bin/activate
# stwórz testproject
(venv) [user01@vlsr01 venv]$ django-admin startproject testproject
(venv) [user01@vlsr01 venv]$ cd testproject
# skonfiguruj bazę danych (domyślnie SQLite)
(venv) [user01@vlsr01 testproject]$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying sessions.0001_initial... OK
# stwórz użytkownika z prawami administratora (admin)
(venv) [user01@vlsr01 testproject]$ python manage.py createsuperuser
Username (leave blank to use 'user01'): user01
Email address: user01@zicher.lab
Password: # wpisz hasło
Password (again):
Superuser created successfully.
(venv) [user01@vlsr01 testproject]$ mcedit testproject/settings.py
# linia 28: ustaw, jeśli chcesz zezwolić na dostęp do Django z innych hostów
# możesz wpisać konkretne hosty oddzielając je [,]
# jeśli chcesz zezwolić wszystkim hostom, ustaw jak poniżej
ALLOWED_HOSTS = ['*']
# uruchom sewer
(venv) [user01@vlsr01 testproject]$ python manage.py runserver 0.0.0.0:8000
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
May 09, 2021 - 17:00:09
Django version 3.0, using settings 'testproject.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

5. Przejdź do [http://hostname lub adres_IP:8000/] z komputera klienta. Jeśli wszystko jest OK, powinna się wyświetlić taka strona.

6. Można zarządzać serwerem za pomocą stworzonego wcześniej użytkownika [user01], na stronie [http://hostname lub adres_IP:8000/admin].

7. Stworzymy teraz testową aplikację, aby użyć Django.

[user01@vlsr01 ~]$ cd ~/venv
[user01@vlsr01 venv]$ source bin/activate
(venv) [user01@vlsr01 venv]$ cd testproject
(venv) [user01@vlsr01 testproject]$ python manage.py startapp test_app
(venv) [user01@vlsr01 testproject]$ mcedit test_app/views.py
# dodaj na końcu
from django.http import HttpResponse
def main(request):
html = '<html>\n' \
'<body>\n' \
'<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">\n' \
'DJANGO test page\n' \
'</div>\n' \
'</body>\n' \
'</html>\n'
return HttpResponse(html)
(venv) [user01@vlsr01 testproject]$ mcedit testproject/urls.py
# linia 17: dodaj
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
path('admin/', admin.site.urls),
path('test_app/', include('test_app.urls')),
]
(venv) [user01@vlsr01 testproject]$ mcedit test_app/urls.py
# stwórz nowy
from django.urls import path
from .views import main

urlpatterns = [
path('', main, name='home')
]
(venv) [user01@vlsr01 testproject]$ mcedit testproject/settings.py
# linia 33: dodaj testową aplikację w sekcji [INSTALLED_APPS]
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'test_app',
]
(venv) [user01@vlsr01 testproject]$ python manage.py runserver 0.0.0.0:8000