00. Presentatie Django

Django

Wat ?      compleet en open source raamwerk voor webapplicaties dmv Python MVT - MVC raamwerk  (Model-View-Controller)

Django is een professioneel raamwerk om internet applicaties mee te bouwen.
Zeker bij complexe applicaties zorgt Django er voor dat het relatief eenvoudig is om snel met resultaten te komen.
Het mooie is dat belangrijke basisfunctionaliteiten zoals bijvoorbeeld inloggen en registreren al in een app zitten en het eenvoudig wordt om uit te breiden naar uw wensen.

Django of Laravel: Welk framework is het beste in 2022 ? zie https://kinsta.com/nl/blog/django-of-laravel/#django-en-laravel-welk-framework-is-beter-voor-webdevelopment

Django heeft het MVT design structuur ! zie https://www.geeksforgeeks.org/django-project-mvt-structure/ 

2005 : World Online (krant VS)  ontwikkelaars Adrian Holovaty en  Willison Simon samen met ,Jacob Kaplan-Mosse, Wilson Miner
PHP gedumpt en Python werd gebruikt  voor ontwikkelen van websites ; succes met Lawrence.com  
open-source software Django  genoemd naar Django Reinhardt (in België geboren als Jean Reinhardt 1910-1953 een gipsy jazz muzikant)  daar Adrian Holovaty een Am muzikant van jazz , woont nu in Amsterdam... 

Django Reinhardt

sedert  1,5 jaar enorm succes ... ,  nu al aan versie 3.0 (april 3.1, dec 3.2 en eind 2021  4.0)
MVC raamwerk 
MVC (Model-View-Controller)
Wat is MVC?
MVC is een software-architectuur ontwerppatroon . Het verdeelt of scheidt uw app in drie delen:
Model: verantwoordelijk voor gegevensopslag en -beheer,
View = weergave: verantwoordelijk voor het weergeven en weergeven van de gebruikersinterface
Controller: verantwoordelijk voor de afhandeling van logica om de gebruikersinterface te besturen en met het datamodel te werken.

MVT structuur: 


model : waar we onze gegevens plaatsen : foto's , video's, titels, namen, beschrijvingen ... datums
view : hoe je website de gegevens krijgt van onze modellen en voor de gebruikers verwerkt.
template : de weergave van de gegevens op de website. Bestaande Tools HTML, CSS en Javascript

standaard worden een aantal apps automatisch toegevoegd aan het Django Project

het mooie is : een app is herbruikbaar , je kunt dezelfde app in meerdere projecten gebruiken
iedere app : admin.py, models.py, views.py en urls.py (meestal)

Django ORM

object-relational mapper 

Django Model : beschrijft je tabel van je database records (in models.py)

eenvoudige manipulatie van je gegevens zonder complexe SQL re moeten schrijven
In de meeste gevallen worden er relaties gelegd tussen je gegevens

een op een (OnetoOne) één op veel relatie (OnetoMany) ; veel op veel relatie (ManyToMany)

Django maakt automatisch je tabellen en indexen in je database

Django biedt 4 basisdatabasefuncties : Creëren, lezen, bijwerken en verwijderen

    CRUD : Create, Read, Update en Delete

Django API

    python API   .... application program interface : data in  XML formaat of JSON (Java Script Object Notation) formaat 

Django Shell

    python manage.py shell

Django admin

    automatisch gegenereerde admin functie

Django SQL database

    een eenvoudige database kan gebruikt worden :  SQLITE3.

    Alsook MySQL, MariaDB , PostgreSQL  Oracle, ...  kan gebruikt worden.

Django ondersteuning internationalizering  i18n en ondersteuning verschillende tijdzones

    webtoepassingen in andere talen : spellingscontrole in het Nederlands

    tijdzones : nul meridiaan van Greenwich = UTC

        wij : UTC + 1

paginering instellen voor lijst

    zie 20 postcodes per pagina ipv 50

django website

    django overzicht

django uitgebreide documentatie

    django documentatie 4.0

    in pdf formaat : doc in pdf formaat 

python

    python beschikt over  zeer uitgebreide pakketten , je moet hier het wiel niet terug uitvinden meestal zal je hier gebruik kunnen maken van reeds geschreven software

    voorbeeld : als de webcam van je laptop wilt gebruiken om qrcodes of streepjescode wilt scannen dan kun je bestaande speciale python pakketten hiervoor gebruiken !

    python taak

database

    standaard SQLITE3   documentatie : sqlite3 documentatie

    andere database : MySQL, PostgreSQL, ORACLE, SAP, IBM_DB2, ODBC

populaire websites dat django gebruiken

    meest populaire django websites

widgets

    allerlei formulier widgets zijn mogelijk : 'TextInput', 'NumberInput', 'EmailInput', 'URLInput', 'PasswordInput', 'HiddenInput', 'MultipleHiddenInput', 'FileInput', 'ClearableFileInput', 'Textarea',     'DateInput', 'DateTimeInput', 'TimeInput', 'CheckboxInput', ...

kalender

    bij een datum veld , klik en er komt een maandkalender te voorschijn

    scrolbaar per dag, maand en jaar

html ckeditor

ckeditor

mijn django projecten

maak gebruik van een virtuele omgeving

    voordeel : onafhankelijk van nieuwere software

    verschillende tools voor een virtuele omgeving

starten django project

django-admin startproject naamproject

starten app binnen een django project

python manage.py startapp naamapp

createsuperuser

python manage.py createsuperuser

opzet Modellen

    models.py
    python manage.py makemigrations
    python manage.py migrate

starten django site

python manage.py runserver 
http://127.0.0.1:8000 toont het django raamwerk
http://127.0.0.1:8000/admin toont het django raamwerk in admin mode

http status codes

http status codes    

templates

django template language DTL

bootstrap 4.5.0 : zie bootstrap4 tutorial w3schools

    Voordelen van Bootstrap:    
    Eenvoudig in gebruik: iedereen met alleen basiskennis van HTML en CSS kan Bootstrap gaan gebruiken
    Responsieve functies: de CSS van Bootstrap past zich aan op smartphones, tablets en desktops
    Mobile benadering: in Bootstrap : stijlen maken deel uit van het kernraamwerk
    Browsercompatibiliteit: Bootstrap 4 is compatibel met alle moderne browsers (Chrome, Firefox, Internet Explorer 10+, Edge, Safari en Opera)    

nieuw bootstrap 5.0