Kuinka luoda viestin toimitustila Djangossa

Tänään teemme reaaliaikaisen viestin toimituksen tilakehyksen Djangon ja Pusherin kanssa.

Tämän oppaan seuraamiseksi tarvitaan perustiedot Djangosta ja Vuesta.

Djangon perustaminen

Ensinnäkin meidän on asennettava Python Django -kirjasto, jos meillä ei vielä ole sitä.
 Asennamme Djangon suorittamalla:

Djangon asentamisen jälkeen on aika luoda projekti. Avaa päätelaite ja luo uusi projekti seuraavan komennon avulla:

https://gist.github.com/4896cf41463ff83e191949a02bbead23

Yllä olevassa komennossa loimme uuden projektin nimeltä pusher_message. Seuraava askel on sovelluksen luominen uuden projektimme sisälle. Suoritamme seuraavat komennot:

Kun uudet sovellukset on määritetty, meidän on kerrottava Djangolle uudesta sovelluksestasi, joten siirrymme kohtaan pusher_message \ settings.py ja lisäämme viestisovelluksen asennettuihin sovelluksiin alla esitetyllä tavalla:

Edellä mainitun jälkeen meidän on aika suorittaa sovellus ja tarkistaa, menivätkö kaikki hyvin.

Terminaalikuorissamme ajamme:

Jos siirrymme selaimeemme kohtaan http: // localhost: 8000, meidän pitäisi nähdä seuraava:

Asenna sovellus Pusheriin

Tässä vaiheessa Django on valmis ja valmis. Meidän on nyt asennettava Pusher ja tartuttava sovellustiedotmme.

Meidän on kirjauduttava Pusheriin, luotava uusi sovellus ja kopioitava myös salainen sovellusavaimemme ja sovellustunnuksesi.

Seuraava vaihe on tarvittavien kirjastojen asentaminen:

Yllä olevassa bash-komennossa asensimme yhden paketin, pusher. Tämä on Pythonin virallinen Pusher-kirjasto, jota käytetään käynnistämään ja lähettämään viestejämme Pusherille.

Luo sovelluksemme

Ensin luodaan malliluokka, joka luo tietokantarakenteen.
Avataan viesti \ models.py ja korvataan sisältö seuraavalla:

Yllä olevassa koodilohossa määrittelimme mallin nimeltä Conversation. Keskustelutaulukko koostuu seuraavista kentistä:

  • Kenttä linkittää viestin käyttäjän, joka sen loi
  • Kenttä viestin tallentamiseksi
  • Kenttä viestin tilan tallentamiseksi
  • Arkisto tallennettiin viestin luontipäivämäärän ja -ajan mukaan

Suorittavat muuttoliikkeet

Meidän on tehtävä siirtymiä ja myös suoritettava ne, jotta tietokantataulumme voidaan luoda. Suoritaksemme sen suorittamalla terminaalissamme seuraavat:

Näkemysten luominen

Djangossa näkymät eivät välttämättä viittaa sovelluksemme HTML-rakenteeseen. Itse asiassa voimme nähdä sen valvojana, kuten muissa puitteissa viitataan.

Avaa meidän Views.py-viesti kansioon ja korvataan sisältö seuraavilla:

Yllä olevassa koodissa olemme määritellyt neljä päätoimintoa, jotka ovat:

  • indeksi
  • lähettää
  • keskustelu
  • toimitetaan

Hakemistofunktioon lisäsimme kirjautumisen edellyttämän koristelaskurin ja läpäissimme myös sisäänkirjautumis-URL-argumentin, jota ei vielä ole, koska se on luotava urls.py-tiedostoon. Lisäksi meille tehtiin oletusmalli, nimeltään chat.html, jonka luomme myös pian.

Lähetystoiminnossa haimme lähetetyn viestin sisällön, tallensimme sen tietokantaamme ja lopulta käynnistimme viestien sanakirjaan kulkevan Pusher-pyynnön sekä kanavan ja tapahtuman nimen.
 Keskustelufunktiossa me vain tartamme kaikki keskustelut ja palautamme ne JSON-vastauksena.

Viimeinkin meillä on toimitettu toiminto, joka on toiminto, joka huolehtii viestien toimittamisen tilasta.

Tässä toiminnossa saamme keskustelun meille toimitetulla tunnuksella. Tämän jälkeen varmistamme, että käyttäjä, joka haluaa käynnistää toimitetun tapahtuman, ei ole viestiä lähettänyt käyttäjä. Lisäksi lähetämme socket_id: n, jotta Pusher ei lähetä tapahtumaa takaisin henkilölle, joka sen laukaisi.

Socket_id tarkoittaa tunnisteena pistorasiayhteyttä, joka laukaisi tapahtuman.

Täytetään URL: n.py

Avaa meidän pusher_message \ urls.py-tiedosto ja korvataan seuraavilla:

Mikä on muuttunut tässä tiedostossa? Olemme lisänneet tiedostoon kuusi uutta reittiä.
 Olemme määritelleet tulopisteen ja osoittaneet sen hakemistotoimintoomme. Seuraavaksi määrittelimme sisäänkirjautumis-URL-osoitteen, jota login_required decorator yrittää käyttää käyttäjän todentamiseksi.

Olemme käyttäneet oletusauth-toimintoa sen käsittelemiseen, mutta läpäisseet oman mukautetun mallin kirjautumiseen, jonka luomme pian.

Seuraavaksi määrittelimme reitit keskustelun viestin liipaisulle, kaikille keskusteluille ja lopulta toimitetulle keskustelulle.

HTML-tiedostojen luominen

Nyt meidän on luotava kaksi HTML-sivua, jotta sovelluksemme voi toimia sujuvasti. Olemme viitanneet kahteen HTML-sivuun sovelluksen rakentamisen aikana.

Luodaan viesti kansioon uusi kansio, nimeltään mallit.

Seuraavaksi luomme mallit-kansioon tiedoston nimeltä login.html ja korvaamme sen seuraavalla:

Vue-komponentti- ja työntäjät

Se siitä! Nyt, kun uusi viesti toimitetaan, se lähetetään ja voimme kuunnella kanavaamme avulla päivittääksesi tilan reaaliajassa. Alla on esimerkki komponentti, joka on kirjoitettu käyttämällä Vue.js.

Huomaa: Alla olevassa Vue-komponentissa määritettiin uusi toiminto, nimeltään ** queryParams **, joka järjestää POST-runkoni, jotta se voidaan lähettää ** x-www-form-urlencoded ** palvelimelle sen sijaan, että ** hyötykuorma **. Teimme tämän, koska Django ei pysty käsittelemään pyyntöjä, jotka tulevat ** hyötykuormana **.

Alla on kuva, joka kuvaa mitä olemme rakentaneet:

johtopäätös

Tässä artikkelissa on käsitelty kuinka luoda reaaliaikainen viestin toimitustila Djangon ja Pusherin avulla. Olemme vapauttaneet tietyt toiminnot CSRF-tarkastuksista ja vapauttaneet lähetystoiminnan harjoittajan vastaanottamasta tapahtuman, jonka ne laukaisivat.

Koodi isännöidään julkisessa GitHub-arkistossa. Voit ladata sen koulutustarkoituksiin.

Onko sinulla parempi tapa rakentaa sovelluksemme, varaukset tai kommentit? Kerro meille kommenteissa. Muista, että jakaminen on oppimista.

Tämän viestin kirjoittaja on alun perin julkaissut täällä ajautuneessa blogissa.

Tätä versiota on muokattu selvyyden vuoksi ja se voi näyttää erilaiselta kuin alkuperäinen viesti.