Django basics Flashcards

1
Q

Dlaczego warto używać web frameworka?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Jak stworzyć virtual environment w folderze z projektem?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Komenda:
$django-admin startproject nazwaprojektu .

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Komenda:
$ python manage.py runserver

A

Starting development server at
http://127.0.0.1:8000

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Komenda:
$ python manage.py startapp projects

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

settings.py

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

INSTALLED_APPS jak go używamy?

A

Każdą nowo-utworzoną apkę w moim projekcie Django muszę dodać do sekcji INSTALLED_APPS w settings.py

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Jak dodać nowy URL (enpoint) mojej dodatkowej apki w Django?

A

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),
]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Jak dodać nowy URL (enpoint) mojej dodatkowej apki w Django?

A

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),
]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Jak stworzyć views.py?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Gdzie możemy zobaczyć Django errors?

A

1) w przeglądarce, szara strona z żółtym nagłówkiem
2) w terminalu: AttributeError

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Jak stworzyć szablon HTML dla naszej apki i gdzie go umieścić ?

A

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’)]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Zmiennna BASE_DIR w settings.py?

A

wskazuje nam na root naszego projektu

e.g

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Jak uniknąć stylu raw HTML na naszej stronie?

A

Można wkleić link ze stylem CSS ze strony Bootstrap.
W HTMLu pod tittle:

<link></link>

Strona od razu wygląda lepiej

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Do czego służy plik models.py?

A

Do komunikacji z bazą danych

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

SQL

A

SQL (ang. Structured Query Language) jest językiem zapytań, przy pomocy którego komunikujemy się z relacyjną bazą danych

16
Q

Tabela w bazie danych jest reprezentowana w Django przez _____

A

klasę w models.py

class Project(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
Technology = models.Charfield(max_length=20)
image = models.Charfield(max_length=100))

każdy wiersz klasy odpowiada kolumnie tabeli w bazie. Nie ma id, bo jest generowane automatycznie. Podajemy również różne jakie typy danych maja sie znaleźć w tych polach.

17
Q

python3 manage.p migrate

A
17
Q

Gdzie zmieniamy bazę danych, z którą chcemy się połączyć?

A

settings.py

DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.sqlite3’,
‘NAME’: BASE_DIR / ‘db.sqlite3’,
}
}

18
Q

Po co używać Django shell?

A

Aby umieścić dane w bazie

19
Q

Co wpisujemy w Django shell aby umieścić nasz projekt w bazie jako obiekt?

A

0) $ python3 manage.py shell
aby otworzyć powłokę django

1) Musimy mieć zdefiniowaną klasę (określającą tabelę) w models. py

2) W terminalu wpisujemy np.:
$ from projects*.models import Project**

*projects to. w naszym drzewie projektu folder z projektami
** Project to nazwa naszej klasy w której mamy zdefiniowane jak ma wyglądać tabela do bazy

3) następnie (nadal w terminalu) do jakiejś zmiennej (np. p1) wpisujemy dane zgodnie z formatką określoną przez klasę

$ p1= Project(title=”test project”, description=”this is a test, 1234!”, technology=”Django”, image=”testproject.png”)

4) aby zapisać dane w bazie

$ p1.save()

20
Q

Jak zobaczyć, czy nasze dane się zapisały w bazie?

A

znowu użyjemy zmiennej np. p

$ results = Projects*.objects.all()

To query przypisaliśmy do zmiennej results, aby móc je wywołać:

$ results

Po wpisaniu tego dostajemy odpowiedź z bazy:
<Query Set [<Project: object (1)>]>

  • Project to nazwa naszej klasy w której mamy zdefiniowane jak ma wyglądać tabela do bazy i z jej pomocą umieściliśmy dane w bazie, wpisując dane w odpowiednie pola

A jak chcemy np. tylko title wziąć to wpisujemy sobie indeks do zapytania:

p = results[0]
p.tittle

otrzymujemy:
“test project”

21
Q

Pod nowym URL (dodaliśmy go do urls.py), chcemy dać HTML, do którego przekażemy nasz projekt (obiekt) z bazy. Jak zacząć to robić?

A

Musimy odpowiednio rozbudować metodę w views.py, która renderowała taki HTML
np.

def all_projects(request):
#query to the db to return all project objects
projects = Project.objects(all)
return render(request, ‘projects/all_projects.html’, {‘projects’: projects})

na końcu daję info że chce te dane z bazy przypisane do zmiennej projects wsadzić do słownika. Będziemy chcieli go wstrzyknąć do HTML. Jako, że nasze dane z bazy to wartość, a nasza zmienna projects to key tego słownika, to potem w HTMLu będzie wystarczyło podać klucz ‘projects’ jako variable:

….
<h1> hello again! </h1>
{{ projects }}

no ale wtedy nam się wyrintuje nasz Query w naszej stronie. Zobaczymy tam

hello again
<Query Set [<Project: object (1)>]>

Można więc to umieścić w logice, która wywołuje konkretne info z naszego słownika:
<h1> hello again! </h1>
{{ projects }}
{% for project in projects %}
<p> {{ project.title }} <p/>
<p> {{ project.description }} <p/>
<p> {{ project.technology }} <p/>
{% endfor %}*

  • zamknięcie HTMLowe mojej pętli for

Teraz już wyświetli nam się coś sensowniejszego:

hello again
<Query Set [<Project: object (1)>]>
test project
this is a test 1234!
Django

22
Q

Co jest przykładem użycia Django Templating Language, który pozwala nam wstrzykiwać dane do HTML?

A

{% code logic %}
{{ variables }}

w code logic dajemy np. jakąś pętlę
variables to właściwie print statement w template

23
Q

Jak zaimportować obrazek i wstrzyknąć go do HTML?

A

na górze pliku HTML wpisujemy:
{% load static %}

a w miejscu w którym chcemy nasz obrazek:

<img></img>

24
Q

Jak wyjść z Django shell?

A

exit()

25
Q

Jeśli dokonamy zmian w kodzie w naszym projekcie, szczególnie w pliku models.py to jak sprawdzić, aby te zmiany sięgnęly też bazy?

A

1) makepigration
$ python3 manage.py makemigration
2) migrate
$ python3 manage.py migrate

26
Q

Do czego służy views.py?

A

W views.py znajdują się funkcje i klasy, które otrzymują żądania internetowe (web request) i zwracją odpowiedź (web response). Taka odpowiedź, to może być zwykła odpowiedź HTTP, ale także szablon HTML lub np. odpowiedź HTTP, która przekierowuje na inną stronę.

27
Q

Do czego służy moduł typing? Był użyty w jednym, z projektów Django jakie widziałam

A

Moduł typing (wbudowany w Pythona od wersji 3.5) pozwala nam na bardzo precyzyjne określanie nawet złożonych typów. Cały moduł ma bardzo pomocną dokumentację

28
Q

So what exactly is Django?

A

Django is a web development framework for Python.
So it is for the Python language
and it allows us to build websites web projects with Python.

Now we still will use HTML, CSS and JavaScript
for the part, our users see five front-end of websites,
but for everything that happens on the server,
so on the remote computer out there in the web,
which handles the incoming requests
and sends back the responses,
for all of that we use Django

29
Q

But what exactly is a framework?

A

A framework is it’s a module,
it’s a third party library
which you install on your system, and the idea is that it has a bunch of utility functionalities, and methods you can use,
and that it solves a lot of problems for you

so that you don’t have to like managing sessions

and authentication and file uploads, parsing incoming requests, and sending back responses,

so that you as a developer don’t have to focus
on those nitty gritty details, but that instead you can focus on what makes up your website,
that you can focus on the core business logic, what earns you money.

30
Q

What is the difference between framework and library?

A

Framework is not just called a library

because it does not just give us all these tools to use but it also gives us a clear guidance, a clear set of rules on how to use these tools/

And that starts with setting up a Django project, it will give us a project which has a certain structure that we should use for any kind of Django project, so you don’t have to think about how to best do something,
you know how to do it
because there is one clear path with Django.

31
Q

, Django is built for Python version ______

A

3.X, so for that latest version of Python,

32
Q

What it means that Django has ‘batteries included’ approach?

A

It means that it comes with everything you need.

This is also a motto for Python.

33
Q

How to start Django project?

A

Skierować się do jakiegoś folderu przy użyciu:
$ cd
$ Python3 -m pip install Django

Sprawdzenie czy sie dobrze zainstalowało:
$ django-admin
$ cd
$ django-admin startproject mypage

Po wykonaniu tej komendy tworzy się folder o nazwie naszego projektu ‘mypage’ i tam struktura plików:
- folder mypage:
__init__.py
asgi.py
settings.py
urls.py
wsgi.py

  • folder templates
  • plik manage.py

Następnie otwieram ten projekt w wybranym IDE np. Ms Visual Studio albo PyCharm

34
Q

What is PEP8?

A

styling guidelines
for Python projects, totally independent of Django.

35
Q

Do czego służy manage.py?

A

manage.py file this file will give us access to
some built-in Django commands, which we can use in any Django project.

You can think of the arguments you pass to manage.py as subcommands. It is your tool for executing many Django-specific tasks – starting a new app within a project, running the development server, running your tests.

Czyli wykorzystuje ten plik podczas pracy nad projektem django w terminalu. Wiele komend, które przekazuje nawiązuje do pliku manage.py

36
Q

Do czego służy __init__.py?

A

It’s empty and we don’t really need to change anything here.

It only exists to mark our project folder as a Python package,