Django er et åpen kildekode, Python-basert rammeverk for rask utvikling og praktisk webdesign. Det tilbyr massevis av ressurser for å håndtere repeterende og nye utviklingsproblemer med letthet, slik at utviklere kan lage bedre og mer pålitelige nettapplikasjoner ved å bruke betydelig færre linjer med kode.
Den tilbyr også mange gunstige egenskaper som gjør ting mer intuitive, inkludert forespørsler om brukerautentisering (pålogging, avlogging), administrasjonsskjemaer, opplasting av filer med mer. Det er en av de beste programvareløsningene for web- og API-utvikling.
Beste applikasjoner og bruk av Django
Som et av de mest hyllede rammeverkene skrevet i Python, er Django veldig allsidig, fleksibel og–avhengig av tilnærmingen din og antall ressurser du bruker–lett.
Derfor kan den brukes til å lage alle typer applikasjoner, inkludert ulike nettsider (wiki-stil nettsteder eller content management systemer), sosiale mediesider, nyhetssider, nettapper og mer.
Django er veldig populær blant noen av de mest fremtredende selskapene over hele verden. Disse inkluderer Instagram, Mozilla, Pinterest, Spotify, National Geographic og fler.
Instagramappen har den største Django-distribusjonen i verden, mens et komplekst prosjekt som National Geographics utdanningsside er sterkt avhengig av Django for content management og andre CMS-relaterte oppgaver.
Ved å bruke Django er Mozilla Firefox i stand til å håndtere store mengder API-forespørsler både raskere og mer effektivt. Spotify bruker noen av Django-applikasjonsfunksjonene til å håndtere dataanalyse og andre backend-tjenester på samme måte.
Vanlige ansvarsområder for Django-utviklere
I og med at Django er et av de mest populære Python-rammeverkene i dag, er det ingen overraskelse at Django-utviklere er noen av de mest ettertraktede Python-relaterte utviklerne. Ofte vil du finne profiler som beskriver dem som Python/Django-utviklere. Django brukes både i backend- og frontend-utvikling, noe som gjør det til en ferdighet fullstack-utviklere også kan ha.
Mens Django har mange funksjoner og egenskaper, er det opp til Django-utviklerne å lage et mangfoldig utvalg av nettapplikasjoner ved å unngå vanlige sikkerhetstrusler som SQL-injeksjon, skripting på tvers av nettsteder og clickjacking.
Videre gjør Djangos CSS-integrasjon og brukerautentiseringssystem det mulig for utviklere å administrere en rekke jobber innen webutvikling, for eksempel brukerautentisering og prosjektspesifikke nettstedskart, med letthet. En god Django-utvikler må kunne lage nettsider samt optimalisere dataalgoritmer og løse dataanalyseproblemer.
Intervjue en Django-utvikler
En gjennomsnittlig inntekt for en programvareutvikler flytende i Django, avhengig av ansienniteten til stillingen, kan variere mellom $50k til $100k i året. I Proxify-nettverket har vi rundt 200 forhåndssjekkede og høyt kvalifiserte Django-utviklere.
Med tusenvis av utviklere som kjenner til Django-rammeverket, er det kombinasjonen av andre ferdigheter og erfaring med å utvikle spesielle applikasjoner som vil avgjøre hvem som er best egnet for din stilling.
Her er noen tips for intervjuprosessen din som kan hjelpe deg med å velge den beste kandidaten.
Forhåndsscreening
En forhåndsscreening er et intervju der du vanligvis siler bort kandidater som ikke fremstår som profesjonelle, eller som muligens ikke oppfyller alle kravene. Det handler mindre om tekniske ferdigheter, og mer om å velge noen med en personlighet som passer bedriftens kultur.
I forhåndsscreeningen, i stedet for å fokusere på teknisk kunnskap og erfaring, prøv å tenke over om denne utvikleren passer godt for teamet ditt, og om du vil at de skal jobbe for deg. Til syvende og sist skal du skal tilbringe 8 timer om dagen med denne personen.
Noen spørsmål du trenger svar på gjennom forhåndsscreeningen:
- Er kandidaten høflig og profesjonell?
- Er denne personen en god samtalepartner?
- Kom de til avtalt tidspunkt?
- Hørte de på spørsmålene dine med oppmerksomhet og respekt?
- Var engelsknivået deres bra nok til at de kan kommunisere med resten av teamet?
- Viste de seg frem på en positiv måte?
- Viste de interesse for firmaet ditt og prosjektene?
Intervjuspørsmål og viktige tekniske kunnskaper
Selv om en god utvikler ikke nødvendigvis trenger en grad i informatikk for å være dyktig i å utvikle webapplikasjoner eller APIer, er noen ferdigheter helt avgjørende for den neste personen som blir med i engineering-teamet ditt.
En dyktig Django-utvikler bør være kunnskapsrik i hvordan man designer, implementerer og feilsøker Python-kode med letthet. De bør også ha erfaring med å jobbe med Django nettfeilsøking, tester, feil, sikkerhet med mer.
En Django-programvareingeniør bør ha andre ferdigheter, som en grundig forståelse av SQL-databaser, høy kjennskap til den siste iterasjonen av Python og dens mange rammeverk, en tilstrekkelig forståelse av REST APIer med mer.
Her er noen intervjuspørsmål du kan stille, og hva du bør forvente av svar:
- Forklar Djangos arkitektur.
Forventet svar: MVT (Model-View-Template)-arkitektur er grunnlaget for Django. Et programvaredesignmønster for å lage webapplikasjoner kalles MVT.
De tre komponentene i MVT-strukturen er som følger:
-
Modell: Modellen vil fungere som dataens grensesnitt. Den er ansvarlig for vedlikehold av data. Den er representert av en database, og fungerer som den logiske datastrukturen for hele applikasjonen (vanligvis relasjonsdatabaser som MySQL og Postgres). For mer informasjon, se Django Models.
-
View: View er brukergrensesnittet som vises når du gjengir en nettside i nettleseren din. Jinja-filer, HTML-, CSS- og JavaScript-filer representerer det. For mer informasjon, gå til Django Views.
-
Template: En template består av statiske HTML-utdatakomponenter og spesifikk syntaks som spesifiserer hvordan de skal kombineres.
- Hva er modeller i Django?
Forventet svar, direkte hentet fra [Django Project](https://docs.djangoproject.com/en/4.0/topics/db/models/):
En modell er den eneste, definitive kilden til informasjon om dataene dine. Den inneholder de essensielle feltene og virkemåten til dataene du lagrer. Vanligvis tilordnes hver modell til en enkelt databasetabell.
Det grunnleggende:
- Hver modell er en Python-klasse under django.db.models.Model.
- Hver attributt i modellen representerer et databasefelt.
- Med alt dette gir Django deg en automatisk generert API for databasetilgang; se making queries.
- Hva er DRF (Django Rest Framework)?
Forventet svar: Django REST-rammeverket tilbyr et kraftig og tilpasningsdyktig verktøysett for å lage WEB APIer. DRF-biblioteket brukes til å utvikle Rest APIer. Den ble eksplisitt designet for å gjøre det enklere å bygge CRUD-operasjoner i Django. Å bruke Django Server som et REST API er gjort enkelt av Django Rest Framework.
- Hva er Django ORM?
Forventet svar: Django ORM er en implementering av konseptet object relational mapping (ORM), som kan brukes til å samhandle med applikasjonsdata fra relasjonsdatabaser som SQLite, PostgreSQL og MySQL.
- Hvordan fungerer Djangos prosjektkatalogstruktur?
Forventet svar: Django bruker en katalogstruktur for å organisere de mange komponentene i webapplikasjonen. For dette opprettes et prosjekt og en app-mappe. Prosjektet kan holdes DRY (Don't Repeat Yourself) og ryddig ved å være riktig organisert og utviklet.
- Hva er statiske filer? Kan du forklare bruken av dem?
Forventet svar: Statiske filer, som bilder, JavaScript og CSS, er avgjørende for å gjengi en komplett nettside. Disse filene er ikke en del av HTML generert av serveren.
- Kan du forklare Django-responsens livssyklus?
Forventet svar: I henhold til grunnsetningen i HTTP-protokollen sender klienten en forespørsel til serveren ved å bruke forespørselsdataer, og serveren svarer klienten. Når vi konfigurerer Django-applikasjonen, krever vi en webserver og WSGI-server. Nettserveren hjelper til med å betjene statiske filer og innhold. Hvis de statiske filene på webserveren ikke kan gjøre det, må WSGI-serveren gjøre det, noe som øker antallet forespørsler til serveren. Derfor må du redusere applikasjonens ytelse gradvis mens du balanserer serverens forespørselsbelastning. Det anbefales på det sterkeste å bruke webserveren.
En klient er et stykke programvare som kan sende forespørsler ved hjelp av HTTPS/HTTP-protokollen. Det blir generelt sett på som en nettleser. Når vi distribuerer Django-rammeverket på databasen, bruker vi en av kombinasjonene "NGINX, uWSGI og Django", "NGINX, gunicorn og Django" eller "Apache, mod wsgi og NGINX."
Konfigurasjonsreglene for å videresende forespørselen til WSGI-serveren, eller håndtere den på egen hånd, er inkludert i hver forespørsel som sendes av en klient til serveren som sendes til webserveren for første gang.
- Hva er bruken av et sesjonsrammeverk?
Forventet svar: Sesjonsrammeverket lar brukere lagre og hente vilkårlige data på en per-site-visitor basis. Den lagrer data på serversiden og samler sending og mottak av informasjonskapsler.
- Hva er en Django field class?
Forventet svar: Field class gir informasjon om, og dynamisk tilgang til, et enkelt felt i en klasse eller et grensesnitt. Det reflekterte feltet kan være et klassefelt (statisk) eller et forekomstfelt.
Django bruker feltklassetyper for å etablere følgende: Databasens kolonnetype instruerer den om hva slags data som skal lagres (f.eks. INTEGER, VARCHAR, TEXT). Når du gjengir et skjemafelt, skal standard HTML-widget brukes (for eksempel skriv inn type="text"> eller velg>).
- Hva er unntak i Django?
Forventet svar: Et Python-skript gir vanligvis et unntak når det kommer til et scenario det ikke kan håndtere. Et Python-objekt som beskriver en feil kalles et unntak. Når et Python-skript møter et unntak, må det enten håndtere det umiddelbart, eller stanse og slutte å virke.
På spørsmål om den beste måten å vurdere ferdighetene til en Django-utvikler på, sier Fullstack Software Developer Ömer Özhan ganske enkelt:
"Jeg ville bedt dem om å lage et eksempelprosjekt, og se på kodekvaliteten. Still også spørsmål om hvordan rammeverket fungerer på et lavere nivå for å sikre at de forstår logikken, syntaksen eller terminologien."
Ömer Özhan
Viktige soft skills
En generell liste over soft skills som rekruttererne hos Proxify bruker når de intervjuer utviklere for en hvilken som helst kunnskap, er følgende:
- Profesjonalitet
- Presenterbarher
- Utmerkede kommunikasjonsferdigheter
- Motivasjon
- Entusiasme
- Meget bra engelsk
- Åpenhet
- Sosiale ferdigheter
- Ærlighet
- Nysgjerrighet
- Fleksibilitet
En spesifikk soft skill angående Django-utviklere, ifølge Ömer, er "å være god til å google og lære nye ting ettersom rammeverket og språket utvikler seg raskt".
Å skille ut den dyktige Django-utvikleren
En utmerket Django-utvikler må ha mange års erfaring, og en bredere portefølje av andre språk og rammeverk, avhengig av hovedfokuset deres. I følge Ömer er høy kodekvalitet, og viljen til å lære nye teknologier, alltid gode indikatorer for en utmerket utvikler.
Burde jeg bruke Django?
Spørsmålet hvorvidt du bør bruke en bestemt plattform, programmeringsspråk eller rammeverk for å møte dine behov, er vanskelig. For det første, hvordan ser prosjektet ditt ut? Er du ute etter å finne opp hjulet på nytt, eller fokuserer du på å skrive en rask og performativ applikasjon for sosiale nettverk ved å bruke skripting på tvers av nettsteder for bedre ytelse over hele linjen?
Her er noen vanlige tilfeller der Django har vist seg å være mer enn tilstrekkelig til å bygge prosjektet ditt fra grunnen av:
- Arbeid med en webserver;
- Utvikling av backend APIer;
- Sikre appen din mot kjente sårbarheter som XSS, SQL Injection, CSRF eller Clickjacking;
- Arbeid med maskinlæring;
- Skalering av applikasjonen i begge retninger (opp eller ned) med mer.
Django passer imidlertid ikke når du skal produsere små, enkle apper som ikke krever kompleks programmering eller databaser, eller hvis prosjektet ditt er for komplekst og krever mer enn en enkelt kodebase.