Django basics Flashcards
Dlaczego warto używać web frameworka?
Web frameworki majątą zaletę,że oferują gotowe narzędzia. Np. nie ma potrzeby pisania pisać zapytań w języku SQL, aby skomunikować się z bazą relacyjną można to zrobić w języku Python. Web frameworki oferują również:
- automatyzowanie powtarzalnych zadań
- obsługiwanie żądań URL i narzędzia do mapowania URL
- automartczne generowanie templatów HTML
- narzędzia do zabezpieczenia sesji i obsługę ciasteczek
Jak stworzyć virtual environment w folderze z projektem?
tworzenie folderu z projektem
W terminalu wpisujemy kolejno:
$ pwd
$ ls -al
$ mkdir django-portfolio
$ ls -al
$ cd django-portfolio
tworzenie wirtualnego środowiska
$python3 -m venv .env
$ls -al
aktywacja wirtualnego środowiska
$ source .env/bin/activate
W PyCharmie po otwarciu projektu wybieram existing environment. A następnie w Preferences wybieram interpreter z pliku. Otwieram
sobie ścieżkę .env/bin/activate i tam wybieram plik ze strzałką do góry i ze znakiem zapytania o nazwie python 3
Komenda:
$django-admin startproject nazwaprojektu .
Dzięki tej komendzie django tworzy strukture folderów naszego nowego projektu
Tworzy się plik manage.py oraz folder o nazwie twojego projektu w którym znajdują siętakie pliki jak:
__init__.py
settings.py
urls.py
wsgi.py
The dot at the end of command avoids extra folders
Komenda:
$ python manage.py runserver
Starting development server at
http://127.0.0.1:8000
Komenda:
$ python manage.py startapp projects
Tworzymy nowąapkę wewnątrz istniejącego już projektu w Django*
*aby działała nasz serwer musi być włączony (poprzedzić $ python manage.py runserver)
settings.py
Plik zawierający ustawienia naszej aplikacji. Są tam określone ustawienia:
BASE_DIR
SECRET_KEY
DEBUG
ALLOWED_HOSTS
INSTALLED_APPS
MIDDLEWARE
ROOT_URLCONF
TEMPLATES
DATABASES
AUTH_PASSWORD_VALIDATORS
LANGUAGE_CODE
TIME_ZONE
STATIC_URL
STATICFILES_DIRS
DEFAULT_AUTO_FIELD
INSTALLED_APPS jak go używamy?
Każdą nowo-utworzoną apkę w moim projekcie Django muszę dodać do sekcji INSTALLED_APPS w settings.py
Jak dodać nowy URL (enpoint) mojej dodatkowej apki w Django?
do istniejących już urlpatterns dodaje swój nowy path:
W pliku urls.py głównego projektu używamy metody include()
e.g
from django.urls import include, path
urlpatterns = {
path(‘admin/’, admin.site.urls),
path(‘’, include(‘infos.urls’)),
]
Oprócz tego, że dodaliśmy ten url do urls.py głównej apki, to jeszcze musimy stworzyć plik urls.py w aplikacji której url chcemy dodać. Wiec Tworzę taki plik, w folderze z tą apką i tam definiuje odpowiednie url w klasyczny sposób (bez include i ):
urlpatterns = [
path(‘me/’, views.me),
path(‘contact/’, views.contact),
]
Jak dodać nowy URL (enpoint) mojej dodatkowej apki w Django?
do istniejących już urlpatterns dodaje swój nowy path:
W pliku urls.py głównego projektu używamy metody include()
e.g
from django.urls import include, path
urlpatterns = {
path(‘admin/’, admin.site.urls),
path(‘’, include(‘infos.urls’)),
]
Oprócz tego, że dodaliśmy ten url do urls.py głównej apki, to jeszcze musimy stworzyć plik urls.py w aplikacji której url chcemy dodać. Wiec Tworzę taki plik, w folderze z tą apką i tam definiuje odpowiednie url w klasyczny sposób (bez include i wskazujemy na views.py ):
from infos import views
urlpatterns = [
path(‘me/’, views.me),
path(‘contact/’, views.contact),
]
Jak stworzyć views.py?
trzeba zdefiniować metodę renderującą template HTML* w pliku views.py oraz podać request** jako argument
e.g
def me(request):
return render(request, “infos/me.html”)
from django.shortcuts import render
def contact(request):
return render(request, “infos/contact.html”)
- tym razem naszym Http Response object jest szablon HTML. Ale możemy też po prostu zaimportować HttpResponse z django.http i zwrócić pusta strone
e.g
from django.http import HttpResponse
def contact(request):
return HTTpResponse()***
**request - objekt django, który jest przekazywany ciągle gdzieś w apce
*** tutaj w ten nawias możemy wrzucić nawet całego HTMLa ukradzionego z jakiejś strony
Gdzie możemy zobaczyć Django errors?
1) w przeglądarce, szara strona z żółtym nagłówkiem
2) w terminalu: AttributeError
Jak stworzyć szablon HTML dla naszej apki i gdzie go umieścić ?
W folderze z naszą mniejszą apką (dla której szablon chcemy stworzyć) tworzymy folder o nazwie ‘templates’ i w nim kolejny folder ‘nazwa_naszej_apki’
Następnie tworzymy plik z rozszerzeniem HTML.
Lecz żeby nasza duża apka widziała ten folder ‘template’ musimy go zarejestrować w głównym pliku settings.py w zmiennej TEMPLATES = [ ‘DIRS’ : [] …
e.g
TEMPLATES = [
{
‘BACKEND’: ‘django.template.backends.django.DjangoTemplates’,
‘DIRS’: [BASE_DIR / ‘templates’]
lub
‘DIRS’: [os.path.join(BASE_DIR, ‘projects/templates’)]
Zmiennna BASE_DIR w settings.py?
wskazuje nam na root naszego projektu
e.g
Jak uniknąć stylu raw HTML na naszej stronie?
Można wkleić link ze stylem CSS ze strony Bootstrap.
W HTMLu pod tittle:
<link></link>
Strona od razu wygląda lepiej
Do czego służy plik models.py?
Do komunikacji z bazą danych