Yadda ake Ƙirƙirar Aikace-aikacen Gidan Yanar Gizon Abokan Waya ta Amfani da Tsarin Django - Sashe na 3


A cikin Sashe na 1 na wannan silsilar kun koyi yadda ake girka da kuma daidaita Django a cikin mahalli mai kama-da-wane kuma kun ƙirƙiri kwarangwal na aikinku na farko.

Sannan a Part 2 mun kirkiro wani application da samfurin Post things, wanda daga baya muka yi hijira zuwa ma’adanar bayanai. A ƙarshe, mun nuna muku yadda ake haɗa sabbin aikace-aikacenku zuwa ga mai amfani da gwamnatin Django.

Waɗannan labaran suna cikin jerin Django:

A cikin wannan jagorar ƙarshe za mu tattauna yadda ake samun damar aikace-aikacen ta amfani da UI da yadda ake yin sa ta wayar salula ga kowane irin na'urori. Wannan ya ce, bari mu fara.

Ƙirƙirar abubuwa ta hanyar dubawar gudanarwa na Django

Don ƙirƙirar abubuwa na nau'in Post (tuna wannan shine ƙirar da muka ayyana a cikin Sashe na 2 na wannan silsilar), za mu yi amfani da ƙirar gudanarwa ta Django.

Tabbatar cewa uwar garken gidan yanar gizo na Django yana gudana akan tashar jiragen ruwa 8000 (ko wani zaɓi na zaɓi) ta hanyar gudanar da umarni mai zuwa daga babban littafin myfirstdjangoproject:

# cd ~/myfirstdjangoenv/myfirstdjangoproject
# python manage.py runserver 0.0.0.0:8000

Yanzu buɗe burauzar gidan yanar gizon ku sannan ku nuna zuwa http://ip-address:8000/admin, sannan ku shiga ta amfani da takaddun shaidar da kuka saita a cikin labarin da ya gabata sannan ku fara rubuta rubutu (wanda, sake, zai ƙirƙiri wani abu na nau'in Post kuma ya saka bayanan da ke da alaƙa a cikin bayanan da ke ƙasa):

Maimaita tsari sau 2 ko 3:

Bayan mun ƙirƙiri wasu abubuwa guda biyu, bari mu ga abin da ya kamata mu yi domin mu nuna su ta amfani da burauzar gidan yanar gizon mu.

Ra'ayinmu na farko

Ra'ayinmu na farko (~/myfirstdjangoenv/myfirstdjangoproject/myblog/views.py) zai kasance mai kula da tace duk abubuwan Post da kuma dawo da waɗanda ƙimar lokacin da aka Buga bai kai ko daidai da kwanan wata da lokaci na yanzu (lokacin Buga__lte=timezone.now).()) oda ta hanyar saukowa lokacin da aka Buga, wanda yayi daidai da faɗin sabon farko.

Ana ajiye waɗannan abubuwa cikin madaidaicin saƙo mai suna, kuma ana mayar da su (wanda aka bayyana a matsayin allposts) don a saka su cikin HTML, kamar yadda za mu gani a sashe na gaba:

from django.shortcuts import render
from .models import Post
from django.utils import timezone
def posts(request):
        posts = Post.objects.filter(whenPublished__lte=timezone.now()).order_by('-whenPublished')
        return render(request, 'myblog/posts.html', {'allposts': posts})

A ƙarshe, ana amfani da alamar sau biyu a cikin lokacin Buga__lte na sama don raba filin bayanai (lokacin da aka buga) daga tacewa ko aiki (lte = ƙasa da ko daidai).

Da zarar mun ayyana ra'ayinmu na farko, bari mu yi aiki a kan samfuri mai alaƙa.

Ƙirƙiri Samfura don Aikinmu na farko

Bi umarnin da hanyoyin da aka bayar a sashin da ya gabata, za mu adana samfurin mu na farko a cikin myblog/templates/myblog. Wannan yana nufin za ku buƙaci ƙirƙirar kundin adireshi mai suna samfuri da ƙaramin kundin adireshi mai suna myblog:

# cd ~/myfirstdjangoenv/myfirstdjangoproject/myblog
# mkdir -p templates/myblog

Za mu kira samfurin posts.html kuma mu saka lambar a ciki. Za ku lura cewa muna ƙara nassoshi kan layi zuwa jQuery, Bootstrap, FontAwesome, da Google fonts.

Bugu da ƙari, mun rufe lambar Python a cikin maƙallan masu lanƙwasa a cikin HTML. Da fatan za a lura cewa ga kowane abu na nau'in Post za mu nuna taken sa, kwanan wata da marubucin da aka buga, da kuma a ƙarshe rubutunsa. A ƙarshe, cikin ja za ku ga cewa muna yin nuni ga abubuwan da aka dawo da su ta myblog/views.py:

Ok, ga fayilolin posts.html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<link href='https://fonts.googleapis.com/css?family=Indie+Flower' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Pacifico' rel='stylesheet' type='text/css'>
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet" type='text/css'">
<script src="https://code.jquery.com/jquery-2.1.4.min.js">
</script>
    <style>
      .title {
        font-family: 'Indie Flower', serif;
        font-size: 30px;
        color: #1E90FF;
      }
      h1 {
        font-family: 'Pacifico', serif;
        font-size: 45px;
        color: #1E90FF;
      }
    </style>
</head>
<body>
<div class="container"><h1>My blog</h1><br>
{% for post in allposts %}
    <div>
        <div class="title">{{ post.title }}</div>
        <strong>Published on {{ post.whenPublished }} by {{ post.author }}.</strong>
        <p>{{ post.text|linebreaks }}</p>
    </div>
{% endfor %}
</div>
</body>
</html>

A cikin samfurin da ke sama, ana amfani da tacewar layi don maye gurbin karya layi a cikin rubutu mara kyau tare da daidai HTML (
ko

) don tsara kowanne. aika da kyau tare da rabuwa sakin layi.

Bayan haka, muna buƙatar saita taswira tsakanin URLs a cikin aikace-aikacen mu da ra'ayoyin da suka dace waɗanda ke dawo da bayanan. Don yin haka, ƙirƙiri fayil mai suna urls.py a cikin myblog tare da abun ciki mai zuwa:

from django.conf.urls import url
from . import views
urlpatterns = [
    url(r'^$', views.posts, name='posts'),
]

r^$ ya cancanci ɗan ƙarin bayani. Jagoran r yana umurtar Django don kula da kirtani a cikin ƙididdiga guda ɗaya azaman magana ta yau da kullun.

Musamman ma, r^$ tana wakiltar kirtani mara komai ta yadda idan muka nuna mai binciken mu zuwa http://ip-address:8000 (kuma babu wani abu), bayanan sun dawo. Za a gabatar da masu canji a cikin views.py ( koma zuwa sashin da ya gabata) a cikin gidanmu:

A ƙarshe, amma ba kalla ba, za mu haɗa fayil ɗin urls.py na aikace-aikacen blog ɗin mu (~/myfirstdjangoenv/myfirstdjangoproject/myblog/urls.py) cikin urls.py na babban aikin mu (~/myfirstdjangoenv/myfirstdjangoproject/myfirstdjangoproject/urls). py): ku.

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'', include('myblog.urls')),
]

Sannan bari mu fara sabar gidan yanar gizo:

# cd ~/myfirstdjangoenv/myfirstdjangoproject
# python manage.py runserver 0.0.0.0:8000

Ya kamata a yanzu mu iya ganin jerin abubuwan da muka ƙirƙira a baya:

Godiya ga Bootstrap, har yanzu kuna iya samun kyakkyawan gani a cikin ƙaramin na'ura:

Takaitawa

Yanzu bari mu sake nazarin ra'ayoyin da muka rufe a cikin wannan labarin da kuma cikin wannan jerin:

1. Kowane samfurin yana bayyana abu da taswirori zuwa tebur na bayanai, wanda filayensa bi da bi taswirar abubuwan wannan abu. A gefe guda, samfuri yana bayyana ma'anar mai amfani inda za a nuna bayanan da aka dawo da ra'ayi.

Bari mu ce muna so mu gyara ƙirar mu ta ƙara filin mai suna taƙaice ga abin Buga, inda za mu adana taƙaitaccen bayanin zaɓi na kowane matsayi. Bari mu ƙara layi mai zuwa a myblog/models.py:

summary = models.CharField(max_length=350, blank=True, null=True)

Kamar yadda muka koya a labarin da ya gabata, muna buƙatar ƙaura canje-canje zuwa bayanan bayanai:

# python manage.py makemigrations myblog
# python manage.py migrate myblog

Sannan yi amfani da hanyar sadarwa na admin don gyara posts kuma ƙara taƙaitaccen taƙaitaccen bayani ga kowane post. A ƙarshe, maye gurbin layi mai zuwa a cikin samfuri (posts.html):

<p>{{ post.text|linebreaks }}</p>

tare da

<p>{{ post.summary }}</p>

Sake sabunta shafin gida don ganin canje-canje:

2. Aikin kallo yana ɗaukar buƙatar HTTP kuma ya mayar da martanin HTTP. A cikin wannan labarin, def posts(buƙata) a cikin views.py yayi kira zuwa tushen bayanai don dawo da duk posts. Idan muna son dawo da duk posts tare da kalmar mai yiwuwa a cikin take, ya kamata mu maye gurbin.

posts = Post.objects.filter(whenPublished__lte=timezone.now()).order_by('-whenPublished')

tare da

posts = Post.objects.filter(title__icontains="ansible").order_by('-whenPublished')

Ta hanyar keɓance mahaɗan mai amfani da dabaru na aikace-aikacen a cikin aikace-aikacen yanar gizo, Django yana sauƙaƙe ayyukan kiyayewa da haɓaka ƙa'idodi.

3. Idan kun bi umarnin da aka bayar a cikin wannan jerin, tsarin aikinku ya kamata ya kasance kamar haka:

myfirstdjangoenv/myfirstdjangoproject
├── db.sqlite3
├── manage.py
├── myblog
│   ├── admin.py
│   ├── admin.pyc
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── 0001_initial.pyc
│   │   ├── __init__.py
│   │   └── __init__.pyc
│   ├── models.py
│   ├── models.pyc
│   ├── templates
│   │   └── myblog
│   │       └── posts.html
│   ├── tests.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

Idan lissafin da ke sama bai nuna daidai ba a cikin burauzar ku, ga hoton sikirin fitowar umarni mai zuwa:

# tree myfirstdjangoenv/myfirstdjangoproject

Takaitawa

Kodayake duk waɗannan ra'ayoyin na iya zama ɗan ban tsoro da farko, zan iya tabbatar muku Django ya cancanci duk ƙoƙarin da ya dace don sanin shi.

Ina fatan misalin da muka yi amfani da shi a cikin wannan silsilar don gabatar muku da wannan fitaccen tsarin gidan yanar gizon zai zaburar da ku don ƙarin koyo. Idan haka ne, takaddun Django na hukuma (wanda ake kiyaye shi akai-akai) shine wuri mafi kyau don farawa.

Zan iya tabbatar muku cewa akwai abubuwa da yawa ga Django fiye da yadda za mu iya rufewa sosai a cikin jerin labarai, don haka jin daɗin bincika shi kuma ku koya ta yin!

Jin kyauta don sauke mana bayanin kula tare da tambayoyi ko shawarwari ta amfani da fom na ƙasa.