[4] Django 3 – instalacja
12 maja 2021Zainstalujemy 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