Django er et open source, Python-baseret framework til hurtig udvikling og praktisk webdesign. Det tilbyder et væld af ressourcer til at håndtere gentagne og nye udviklingsproblemer med lethed, så udviklere kan bygge bedre og mere pålidelige webapplikationer ved hjælp at betydelig færre kodelinjer.
Den har også mange gunstige egenskaber, der gør mange ting mere intuitive, herunder brugergodkendelsesforespørgsler (tilmelding og afmelding), administrationsformularer, upload af filer og meget mere. De er en af de bedste softwareløsninger til web- og API-udvikling.
De bedste applikationer og anvendelser af Django
Django er et af de mest roste frameworks der er skrevet Python, og er meget alsidig, fleksibel og-afhængigt af din tilgang og mængden af ressourcer, du bruger-letvægtigt.
Derfor kan det bruges til at oprette alle slags applikationer, herunder forskellige typer websites (wiki-stil eller content management systems), Websites for sociale medier, nyhedssider, webapps og meget mere.
Django er meget populært blandt nogle af de mest fremtrædende virksomheder i hele verden. Disse omfatter Instagram, Mozilla, Pinterest, Spotify, National Geographic og mange flere.
Instagram-webappen har den største Django deployment i verden, mens et komplekst projekt som National Geographics Education-side i høj grad er afhængig af Django til indholdsstyring og andre CMS-relaterede opgaver.
Ved hjælp af Django, kan Mozilla Firefox også håndtere store mængder API-forespørgsler hurtigere og mere effektivt. På den anden side bruger Spotify nogle af Django-applikationsfunktionerne til at håndtere dataanalyse og andre backend-tjenester på samme måde.
Django-udvikleres fælles ansvarsområder
Da Django er et af de mest populære Python frameworks i dag, er det ikke overraskende at Django-udviklere er en af de mest efterspurgte Python-relaterede udviklere derude. Då det er meget almindeligt, at du vil finde udviklerprofiler, der beskriver dem som Python/Django-udviklere. Django bruges både i backend- og frontendudvikling, hvilket også gør det til en kompetence, som fullstack-udviklere måske også har.
Django har mange funktioner og egenskaber,, men det er op til Django-udviklerne at skabe en bred vifte af webapplikationer ved at undgå almindelige sikkerhedstrusler såsom SQL-injection, cross-site scripting og clickjacking.
Djangos CSS-integration og brugergodkendelsessystem gør det desuden muligt for udviklere at håndtere en række forskellige webudviklingsopgaver, sådan brugergodkendelse og projektspecifikke webstedskort, med lethed. En god Django-udvikler skal være i stand til at skabe websteder samt optimere dataalgoritmer og løse dataanalyseproblemer.
Interview med en Django-udvikler
Den gennemsnitlige løn for en softwareudvikler, der taler flydende Django, kan, afhængigt af stillingens anciennitet, ligge mellem 50.000 og 100.000 USD om året. I Proxify-netværket har vi omkring 200 gennemtestede og højt kvalificerede Django-udviklere.
Selvom der er tusindvis af udviklere, der kender Django-frameworket, er det en kombination af andre færdigheder og erfaring med udvikling af bestemte applikationer, der afgør hvem der er bedst egnet til din stilling.
Her er nogle tips til din samtaleproces, som kan hjælpe dig med at vælge den bedste kandidat.
Pre-screening
En pre-screening er en samtale, hvor du normalt frasorterer kandidater, der ikke virker professionelle, eller som måske ikke opfylder alle kravene. Det handler mindre om tekniske evner og mere om at udvælge en kandidat med en personlighed der passer til din virksomhedskultur.
I stedet for at fokusere på tekniske evner og erfaring, skal du i pre-screeningen forsøge at overveje, om denne udvikler vil passe godt ind i dit team, og om du ønsker, at han/hun skal begynde at arbejde for dig. Når alt kommer til alt, skal du tilbringe 8 timer om dagen sammen med denne person.
Nogle af de spørgsmål, som du skal have besvaret for pre-screeningen, er:
- Er denne person høflig og professionel?
- Er denne person en god samtalepartner?
- Kom de til tiden?
- Lyttede de til dine spørgsmål med fokus og respekt?
- Var deres engelskniveau tilstrækkeligt til, at de kunne kommunikere med resten af teamet?
- Var de i stand til at sætte sig selv i et godt lys?
- Viste de interesse for din virksomhed og dine projekter?
Interviewspørgsmål og nødvendige tekniske færdigheder
Selv om en god udvikler ikke nødvendigvis behøver en uddannelse i datalogi for at være dygtig til at udvikle webapplikationer eller API’er, er der nogle færdigheder, der er helt essentielle for den næste person der skal indgå i dit ingeniørteam.
En udvikler, der er dygtig til Django, bør have viden om hvordan man nemt designer, implementerer og fejlfinder Python-kode. De bør også have erfaring med at arbejde med Django-webdebugging, tests, bugs, sikkerhed og meget mere.
En Django-softwareingeniør bør kende andre færdigheder, såsom en grundig forståelse af SQL-databaser, stor fortrolighed med den seneste udgave af Python og dets mange frameworkss, en tilstrækkelig forståelse af REST API’ere og meget mere.
Her er nogle interviewspørgsmål, som du kan stille dem, og hvad du kan forvente, at de vil svare:
- Forklar os Django arkitekturen.
Forventet svar: MVT (Model-View-Template) arkitekturen er grundlaget for Django. Et softwaredesignmønster til oprettelse af webapplikationer kaldes MVT.
De tre komponenter i MVT-strukturen er som følger:
-
Model: Modellen tjener som dataens grænseflade. Den er ansvarlig for vedligeholdelse af data. Den repræsenteres af en database og tjener som den logiske datastruktur for hele applikationen (generelt relationelle databaser som MySQL og Postgres). For yderligere oplysninger henvises til Djangomodeller.
-
View: View er den brugergrænseflade, der vises, når du viser en website i din browser. Den repræsenteres af Jinja-filer, HTML-, CSS- og JavaScript-filer. Du kan finde yderligere oplysninger I Django Views.
-
Template: En template består af statiske HTML-udgangskomponenter og specifik syntaks, der angiver, hvordan de skal kombineres.
- Hvad er models i Django?
Forventet svar, direkte Hentet fra Django Project:
En model er den eneste, definitive kilde til information om dine data. Den indeholder de væsentlige felter og adfærdsformer for de data, du lagrer. Generelt set er hver model et map til en enkelt databasetabel.
Det grundlæggende:
- Hver model er en Python klasse, der er en underklasse af django.dk.models.Model.
- Hver attributei modellen repræsenterer et databasefelt.
- Med alt dette giver Django dig et automatisk genereret API til databaseadgang; se ”at lave queries”
- Hvad er DRF (Django Rest Framework)?
Forventet svar: Django REST frameworket tilbyder en kraftfuld og tilpasningsdygtig værktøjskasse til at skabe web-API’er. DRF-biblioteket bruges til at udvikle Rest-API’er. Det blev udtrykkeligt designet til at gøre det enklere at opbygge CRUD-operationer i Django. Udnyttelse af din Django-server som et Rest-API kan nemt lade sig gøre med Django Rest Framework.
- Hvad er Django ORM?
Forventet svar: Django ORM er en implementering af ORM-konceptet (object-relationel mapping), som kan bruges til at interagere med applikationsdata fra relationelle databaser såsom SQLite, PostgreSQL og MySQL.
- Hvordan fungerer mappestrukturen i Django-projektet?
Forventet svar: Django burger en mappestruktur til at organisere de mange komponenter i webapplikationen. Til dette formål oprettes der en projekt- og en app-mappe. Projektet kan holdes DRY (Don’t Repeat Yourself) og overskueligt ved at være korrekt organiseret og udviklet.
- Hvad er static files? Kan du forklare deres anvendelse?
Forventet svar: Static files, såsom billeder, JavaScript og CSS er afgørende for at gengive en komplet hjemmeside. Disse filer er ikke en del af den HTML, der genereres af serveren.
- Kan du forklare Django response lifecycle?
Forventet svar: I henhold til det grundlæggende princip i HTTP-protokollen sender klienten en anmodning til serveren ved hjælp af anmodningsdata, og serveren svarer klienten. Under konfigurationen af Django-applikationen har vi brug for en webserver og en WSGI-server. Webserveren hjælper med at servere statiske filer og indhold. Hvis de statiske filer på webserveren ikke kan klare det, skal WSGI-serveren gøre det, hvilket øger antallet af anmodninger til serveren. Derfor reduceres applikationens ydeevne gradvist, samtidig med at serverens anmodningsbelastning balanceres. Derfor anbefales det kraftigt at bruge webserveren.
En klient er et stykke software, der kan sende forespørgsler ved hjælp af HTTPS/HTTP-protokollen. Den betragtes generelt som en webbrowser. Når vi implementerer Django frameworket på databasen, burger vi en af kombinationerne “NGINX, uWSGI og Django," "NGINX, gunicorn og Django," eller "Apache, mod wsgi og NGINX."
Reglerne for konfiguration til at videresende anmodningen til WSGI-serveren eller til at håndtere den selv er medtaget i hver anmodning, som en klient sender til serveren, og som sendes til webserveren første gang.
- Hvad er brugen af et session framework?
Forventet svar: Session frameworket giver brugerne mulighed for at lagre og hente vilkårlige data på basis af hver enkelt besøgende på et website. Det gemmer data på serversiden og sammenfatter afsendelse og modtagelse af cookies.
- Hvad er en Django field klasse?
Forventet svar: Field klassen giver oplysninger om, og dynamisk adgang til, et enkelt felt i en klasse eller grænseflade. Det reflekterede felt kan være et klassefelt (statisk) eller et instance felt.
Django burger field klasse types til at etablere følgende: Databasens kolonnetype viser hvilken type data der skal gemmes (f.eks. INTEGER, VARCHAR, TEXT). Ved gengivelse af et formularfelt skal standard HTML-widgetten anvendes (f.eks. input type="text"> eller select>).
- Hvad er exceptions i Django?
Forventet svar: Et python-script rejser typisk en exception, når det kommer til et scenarie, som det ikke kan håndtere. Et Python object, der beskriver en fejl, kaldes en exception/undtagelse. Når et Python-script støder på en undtagelse, skal det enten håndtere den med det samme eller afslutte og holde op med at arbejde.
Når han bliver spurgt om den bedste måde at vurdere en Django-udviklers færdigheder på, siger Fullstack-softwareudvikler, Ömer Özhan, ganske enkelt:
"Jeg ville bede dem om at lave et test-projekt og se på kodekvaliteten. Stil også spørgsmål om, hvordan frameworket fungerer på et lavere niveau for at sikre dig, at de forstår logikken, syntaksen eller terminologien."
Ömer Özhan
Væsentlige soft skills
Rekrutteringsmedarbejdere hos Proxify bruger følgende generelle liste over bløde færdigheder, når de interviewer udviklere inden for et hvilket som helst felt:
- Professionalisme
- Præsentationsevne
- Fremragende kommunikationsevner
- Motivation
- Entusiasme
- Gode engelskkundskaber
- Åbenhed
- Sociale færdigheder
- Ærlighed
- Nysgerrighed
- Fleksibilitet
Ifølge Ömer er en særlig soft skill for Django-udviklere, “at være god til at google og lære nye ting, da frameworket udvikler sig hurtigt”.
Sådan spotter du en rigtig god Django-udvikler
En fremragende Django-udvikler skal have mange års erfaring og en bredere portefølje af andre sprog og frameworks, afhængigt af deres hovedfokus. Ifølge Ömer er høj kodekvalitet og villighed til at lære nye teknologier altid gode indikatorer for en fremragende udvikler.
Skal jeg bruge Django?
Spørgsmålet om, hvorvidt du skal bruge en bestemt platform, et bestemt programmeringssprog eller et bestemt framework for at opfylde dine behov er vanskeligt at afgøre. Først og fremmest, hvordan ser dit projekt ud? Er du ude efter at genopfinde hjulet, eller er dit fokus på at skrive en hurtig og performativ social network applikation, der anvender cross-site scripting for at opnå bedre ydeevne over hele linjen?
Her er nogle almindelige tilfælde, hvor Django har vist sig at være mere end tilstrækkeligt til at bygge dit projekt op fra bunden:
- Arbejde med en webserver;
- Udvikling af backend API’er;
- Sikring af din app mod kendte sårbarheder såsom XSS, SQL-injection, CSRF eller Clickjacking;
- Arbejde med maskinlæring;
- Skalering af din applikation i begge retninger (op eller ned) og meget mere.
Django er dog ikke et godt valg, hvis du skal producere små, enkle apps, der ikke kræver kompleks programmering eller databaser, eller hvis dit projekt er for komplekst og kræver mere end en enkelt kodebase.