"Tämä artikkeli on tarkistettu ja päivitetty Djangon uusimmalla versiolla - toukokuu 2016"
Sisään Osa 1 tästä sarjasta opit asentamaan ja määrittämään Djangon virtuaalisessa ympäristössä ja loit ensimmäisen projektisi luuranon.
Sitten sisään Osa 2 loimme sovelluksen ja mallin Lähettää objektit, jotka myöhemmin siirrettiin tietokantaan. Lopuksi esittelimme sinulle, miten integroit äskettäin luodun sovelluksesi Django -hallinnan käyttöliittymään.
Nämä artikkelit ovat osa Django -sarjaa:
Django -verkkokehyksen asentaminen ja määrittäminen virtuaaliympäristöissä - Osa 1
Python -perusteiden tarkistaminen ja ensimmäisen verkkosovelluksen luominen Djangon avulla - Osa 2
Tässä viimeisessä oppaassa keskustelemme siitä, miten pääset sovellukseen käyttöliittymän avulla ja kuinka tehdä siitä mobiiliystävällinen kaikentyyppisille laitteille. Se sanoi, aloitetaan.
Tyyppisten objektien luominen
Lähettää (Muista, että tämä on malli, jonka olemme määritelleet Osa 2 tästä sarjasta), käytämme Django -admin -käyttöliittymää.Varmista, että sisäänrakennettu Django-verkkopalvelin toimii portissa 8000 (tai toinen valitsemasi) suorittamalla seuraavan komennon ulkoa ensimmäinen projektini hakemisto:
# cd ~/myfirstdjangoenv/myfirstdjangoproject. # python manage.py runserver 0.0.0.0:8000.
Avaa nyt selain ja osoita http://ip-address: 8000/admin
, kirjaudu sitten sisään käyttämällä edellisessä artikkelissa määrittämiäsi tunnistetietoja ja aloita viestin kirjoittaminen (joka luo jälleen tyypin objektin Lähettää ja lisää niihin liittyvät tiedot taustalla olevaan tietokantaan):
Toista prosessi 2 tai 3 kertaa:
Kun olemme luoneet pari viestiä, katsotaan, mitä meidän on tehtävä, jotta voimme näyttää ne verkkoselaimen avulla.
Ensimmäinen näkemyksemme (~/myfirstdjangoenv/myfirstdjangoproject/myblog/views.py) vastaa kaikkien suodattamisesta Lähettää kohteita ja palauttaa ne, joiden arvo on kunJulkaistu on pienempi tai yhtä suuri kuin nykyinen päivämäärä ja kellonaika (whenPublished__lte = timezone.now ()) laskevaan järjestykseen kunJulkaistu, joka on sama kuin sanoa "viimeisin ensin“.
Nämä objektit tallennetaan muuttujaan, joka on nimetty kätevästi, ja palautetaan (tunnistetaan nimellä allpostit) upotetaan HTML -koodiin, kuten näemme seuraavassa osiossa:
django.shortcuts -tuontihahmonnosta. .models import Post. osoitteesta django.utils tuonti aikavyöhyke. def viestit (pyyntö): posts = Post.objects.filter (whenPublished__lte = timezone.now ()). order_by ('-whenPublished') return render (pyyntö, 'myblog/posts.html', {'allposts': posts} )
Lopuksi tupla -alaviiva kunJulkaistu__lte
yllä olevaa käytetään tietokantakentän erottamiseen (kun Julkaistu) suodattimesta tai toiminnosta (lte = vähemmän kuin tai yhtä suuri).
Kun olemme määritelleet alkuperäisen näkemyksemme, jatketaan siihen liittyvän mallin kanssa.
Edellisessä osassa annettujen ohjeiden ja polkujen mukaisesti tallennamme alkuperäisen mallimme sisälle myblog/templates/myblog. Tämä tarkoittaa, että sinun on luotava hakemisto nimeltä malleja ja alihakemisto nimeltä blogini:
# cd ~/myfirstdjangoenv/myfirstdjangoproject/myblog. # mkdir -p -mallit/myblog.
Soitamme mallille posts.html
ja lisää siihen seuraava koodi. Huomaat, että lisäämme online -viittauksia jQuery, Bootstrap, FontAwesome ja Google -fontit.
Lisäksi olemme liittäneet Python -koodin HTML -koodin sisällä oleviin hakasulkeisiin. Huomaa, että jokaiselle Post -tyyppiselle kohteelle näytetään sen nimi, julkaisupäivä ja kirjoittaja sekä lopuksi teksti. Lopuksi punaisella näet, että viittaamme kautta palautettuihin kohteisiin myblog/views.py:
Ok, tässä on posts.html tiedosto:
Blogini
{ % postitse postauksissa %}{ % endfor %}{{post.title}}Julkaistu {{post.whenPublished}}, {{post.author}}.{{post.text | rivinvaihdot}}
Edellä sapluuna, rivinvaihdot suodatinta käytetään korvaamaan tekstin rivinvaihdot vastaavalla HTML -vastineella (
tai
Seuraavaksi meidän on määritettävä kartoitus sovelluksemme URL -osoitteiden ja vastaavien tietojen palauttavien näkymien välille. Luo tätä varten tiedosto nimeltä urls.py sisällä blogini seuraavan sisällön kanssa:
osoitteesta django.conf.urls tuonti -URL. alkaen. Tuo näkymät. urlpatterns = [url (r '^$', views.posts, name = 'posts'),]
r '^$'
ansaitsee hieman enemmän selitystä. Johtava r
kehottaa Djangoa käsittelemään yksittäisten lainausmerkkien merkkijonoa säännöllisenä lausekkeena.
Erityisesti, r '^$'
on tyhjä merkkijono, joten kun osoitamme selaimeemme http://ip-address: 8000
(eikä mitään muuta), muuttujan palauttamat tiedot viestejä sisällä views.py
(katso edellinen osa) esitetään kotisivullamme:
Viimeisenä, mutta ei vähäisimpänä, sisällytämme urls.py blogisovelluksemme tiedosto (~/myfirstdjangoenv/myfirstdjangoproject/myblog/urls.py) osaksi urls.py pääprojektistamme (~/myfirstdjangoenv/myfirstdjangoproject/myfirstdjangoproject/urls.py):
alkaen django.conf.urls tuonti sisältää, url. from django.contrib import admin urlpatterns = [url (r '^admin/', include (admin.site.urls)), url (r '', include ('myblog.urls')),]
Aloitetaan sitten verkkopalvelin:
# cd ~/myfirstdjangoenv/myfirstdjangoproject. # python manage.py runserver 0.0.0.0:8000.
Meidän pitäisi nyt nähdä aiemmin luomiemme viestien luettelot:
Kiitokset Bootstrap, voit silti saada erinomaisen visualisoinnin pienemmässä laitteessa:
Tarkastellaan nyt käsitteitä, joita olemme käsitelleet tässä artikkelissa ja koko sarjassa:
1. Jokainen malli- määrittelee objektin ja kartoittaa tietokantataulukon, jonka kentät vuorostaan yhdistyvät kyseisen objektin ominaisuuksiin. Toisaalta a sapluuna määrittelee käyttöliittymän, jossa näkymän palauttamat tiedot näytetään.
Oletetaan, että haluamme muokata malliamme lisäämällä kentän nimeltä yhteenveto kohteeseen Lähettää objekti, johon tallennamme valinnaisen lyhyen kuvauksen jokaisesta viestistä. Lisätään seuraava rivi myblog/models.py:
yhteenveto = mallit. CharField (max_length = 350, blank = True, null = True)
Kuten opimme edellisestä artikkelista, meidän on siirrettävä muutokset tietokantaan:
# python manage.py makemigrations myblog. # python manage.py siirrä myblog.
Muokkaa sitten viestejä järjestelmänvalvojan käyttöliittymän avulla ja lisää lyhyt yhteenveto jokaiseen viestiin. Korvaa lopuksi mallin seuraava rivi (posts.html):
{{post.text | rivinvaihdot}}
kanssa
{{post.summary}}
Näet muutokset päivittämällä kotisivun:
2. A näkymä -toiminto ottaa HTTP -pyynnön ja palauttaa HTTP -vastauksen. Tässä artikkelissa, def viestit (pyyntö) sisään views.py soittaa alla olevaan tietokantaan ja hakee kaikki viestit. Jos haluamme hakea kaikki viestit, joissa on sana kyvytön otsikossa meidän pitäisi korvata.
posts = Post.objects.filter (whenPublished__lte = timezone.now ()) .order_by ('-whenPublished')
kanssa
posts = Post.objects.filter (title__icontains = "ansible") .order_by ('-whenPublished')
Erottamalla käyttöliittymän verkkosovellusten sovelluslogiikasta Django helpottaa sovellusten ylläpitoa ja laajentamista.
3. Jos noudatit tämän sarjan ohjeita, projektisi rakenteen tulisi olla seuraava:
myfirstdjangoenv/myfirstdjangoproject. ├── db.sqlite3. ├── manage.py. Bl── myblog. │ ├── admin.py. │ ├── admin.pyc. │ ├── __init__.py. │ ├── __init __. Pyc. │ ├── muuttoliikkeet. │ │ ├── 0001_initial.py. │ │ ├── 0001_initial.pyc. │ │ ├── __init__.py. │ │ └── __init __. Pyc. │ ├── models.py. │ ├── models.pyc. │ ├── malleja. Bl │ └── myblog. │ │ └── posts.html. │ ├── testit.py. │ ├── urls.py. │ ├── urls.pyc. │ ├── views.py. │ └── views.pyc. └── myfirstdjangoproject ├── __init__.py ├── __init __. Pyc ├── settings.py ├── settings.pyc ├── urls.py ├── urls.pyc ├── wsgi.py └── wsgi .pyc.
Jos yllä oleva luettelo ei näy oikein selaimessasi, tässä on kuvakaappaus seuraavan komennon tuloksesta:
# puu myfirstdjangoenv/myfirstdjangoproject.
Vaikka kaikki nämä käsitteet voivat aluksi tuntua hieman pelottavilta, voin vakuuttaa teille, että Django on kaikkien sen tuntemiseen tarvittavien ponnistusten arvoinen.
Toivon, että esimerkki, jota olemme käyttäneet tässä sarjassa esitelläksemme sinulle tämän erinomaisen verkkokehyksen, motivoivat sinua oppimaan lisää. Jos on, niin virkamies Djangon dokumentaatio (joka pidetään jatkuvasti ajan tasalla) on paras paikka aloittaa.
Voin vakuuttaa teille, että Djangossa on paljon enemmän kuin mitä voimme käsitellä riittävästi artikkelisarjassa, joten voit tutkia sitä ja oppia tekemällä!
Voit vapaasti lähettää meille muistiinpanon, jossa on kysymyksiä tai ehdotuksia alla olevan lomakkeen avulla.