Otu esi emepụta ngwa webụ enyi na enyi na-eji Django Framework - Nkebi nke 3


Na akụkụ nke 1 nke usoro isiokwu a, ị mụtara ka esi etinye na hazie Django na gburugburu ebe obibi ma ị mepụtara ọkpụkpụ nke ọrụ mbụ gị.

Mgbe ahụ na Nkebi 2 anyị mepụtara ngwa na ihe nlereanya maka ihe Post, nke anyị mechara kwaga na nchekwa data. N'ikpeazụ, anyị gosiri gị otu esi ejikọta ngwa gị emepụtara ọhụrụ na interface onye ọrụ nchịkwa Django.

Akụkọ ndị a bụ akụkụ nke usoro Django:

N'ime ntuziaka ikpeazụ a, anyị ga-atụle otu esi enweta ngwa site na iji UI yana otu esi eme ya enyi na enyi maka ụdị ngwaọrụ niile. Nke ahụ kwuru, ka anyị malite.

Ịmepụta ihe site na interface nchịkwa Django

Iji mepụta ihe ụdị Post (cheta na nke ahụ bụ ihe nlereanya anyị kọwara na Nkebi nke 2 nke usoro isiokwu a), anyị ga-eji interface nchịkwa Django.

Jide n'aka na ihe nkesa weebụ arụnyere na Django na-agba ọsọ na ọdụ ụgbọ mmiri 8000 (ma ọ bụ nke ọzọ nke ị na-ahọrọ) site na ịme iwu na-esonụ site na akwụkwọ ndekọ myfirstdjangoproject nke mpụta:

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

Ugbu a mepee ihe nchọgharị weebụ gị wee rụtụ aka na http://ip-address:8000/admin, wee banye na iji nzere ị debere na edemede gara aga wee malite ide akwụkwọ ozi (nke ọzọ, ga-emepụta ihe n'ụdị Post wee fanye data metụtara na nchekwa data dị n'okpuru):

Tinyegharịa usoro ahụ ugboro 2 ma ọ bụ 3:

Mgbe anyị mepụtachara posts ole na ole, ka anyị hụ ihe anyị kwesịrị ime iji gosi ha site na iji ihe nchọgharị weebụ anyị.

Echiche mbụ anyị

Echiche mbụ anyị (~/myfirstdjangoenv/myfirstdjangoproject/myblog/views.py) ga-ahụ maka nzacha ihe niile Post na iweghachi ndị ebe uru mgbe ebipụtara erughị ma ọ bụ ha nhata na ụbọchị na oge dị ugbu a (mgbe Bipụtara__lte=timezone.now).()) nyere iwu site n'ịgbadata mgbe ebipụtara ya, nke bụ otu na ịsị nke mbụ.

A na-echekwa ihe ndị a n'ime akwụkwọ aha dị iche iche, wee weghachi ya (apụtara dị ka akwụkwọ ozi niile) ka etinye ya na HTML, dịka anyị ga-ahụ na ngalaba na-esote:

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})

N'ikpeazụ, a na-eji akara okpukpu abụọ na mgbe ebipụtara__lte n'elu iji kewapụ ebe nchekwa data (mgbe ebipụtara) na nzacha ma ọ bụ ọrụ (lte = ihe na-erughị ma ọ bụ nhata).

Ozugbo anyị kọwapụtara echiche mbụ anyị, ka anyị rụọ ọrụ na template jikọtara.

Mepụta ndebiri maka ọrụ mbụ anyị

N'ịgbaso ntuziaka na ụzọ enyere na ngalaba gara aga, anyị ga-echekwa template mbụ anyị n'ime myblog/templates/myblog. Nke a pụtara na ị ga-achọ imepụta ndekọ aha ndebiri yana subdirectory akpọrọ myblog:

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

Anyị ga-akpọ template posts.html wee tinye koodu na-esonụ na ya. Ị ga-achọpụta na anyị na-agbakwunye ntụaka n'ịntanetị na jQuery, Bootstrap, FontAwesome na mkpụrụedemede Google.

Na mgbakwunye, anyị agbachiela koodu Python n'ime brackets curly n'ime HTML. Biko mara na maka ihe ọ bụla ụdị Post anyị ga-egosi aha ya, ụbọchị e bipụtara ya na onye dere ya, na n'ikpeazụ ederede ya. N'ikpeazụ, na-acha uhie uhie ị ga-ahụ na anyị na-ezo aka na ihe ndị e weghachiri site na myblog/views.py:

Ọ dị mma, nke a bụ faịlụ 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>

N'ime ndebiri dị n'elu, a na-eji nzacha linebreaks dochie nkwụsịtụ ahịrị na ederede doro anya na HTML kwekọrọ (
ma ọ bụ

) iji hazie nke ọ bụla. biputere nke ọma na nkewa paragraf.

Ọzọ, anyị kwesịrị ịtọ maapụ n'etiti URL na ngwa anyị yana echiche kwekọrọ na-eweghachi data ahụ. Iji mee nke a, mepụta faịlụ aha ya bụ urls.py n'ime myblog nwere ọdịnaya ndị a:

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

r^$ kwesịrị ntakịrị nkọwa. Onye na-eduga r na-akuziri Django ka ọ na-emeso eriri n'ime otu nhụta dị ka okwu mgbe niile.

Karịsịa, r^$ na-anọchi anya eriri efu nke mere na mgbe anyị na-atụ ihe nchọgharị anyị aka na http://ip-address:8000 (na ọ dịghị ihe ọzọ), data ahụ weghachiri. site na mgbanwe posts dị n'ime views.py (na-ezo aka na ngalaba gara aga) ka a ga-ewepụta na ibe anyị:

N'ikpeazụ, ma ọ dịghị ihe ọzọ, anyị ga-etinye faịlụ urls.py nke ngwa blọgụ anyị (~/myfirstdjangoenv/myfirstdjangoproject/myblog/urls.py) n'ime urls.py nke isi ọrụ anyị (~/myfirstdjangoenv/myfirstdjangoproject/myfirstdjangoproject/urls) py):

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')),
]

Mgbe ahụ, ka anyị malite sava weebụ:

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

Anyị kwesịrị ugbu a ịhụ ndepụta nke posts anyị mepụtara na mbụ:

N'ihi Bootstrap, ị ka nwere ike ịhụ nhụta dị mma na obere ngwaọrụ:

Na-achịkọta

Ka anyị leba anya ugbu a n'echiche ndị anyị kpuchiri n'isiokwu a na n'ime usoro isiokwu a:

1. Ụdị ọ bụla na-akọwapụta ihe na maapụ na tebụl nchekwa data, nke mpaghara ya na-atụgharị maapụ na njirimara nke ihe ahụ. N'aka nke ọzọ, template na-akọwa interface onye ọrụ ebe a ga-egosipụta data weghachiri eweghachi site na nlele.

Ka anyị kwuo na anyị chọrọ ịgbanwe ihe nlereanya anyị site n'ịgbakwunye mpaghara aha ya bụ nchịkọta na ihe nbipute, ebe anyị ga-echekwa nkọwa nkenke nhọrọ nke ọkwa ọ bụla. Ka anyị tinye ahịrị ndị a na myblog/models.py:

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

Dịka anyị mụtara n'isiokwu gara aga, anyị kwesịrị ịkwaga mgbanwe na nchekwa data:

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

Mgbe ahụ jiri interface nchịkwa iji dezie posts wee tinye nchịkọta nkenke na ọkwa ọ bụla. N'ikpeazụ, dochie ahịrị na-esonụ na template (posts.html):

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

ya na

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

Megharịa ibe mbụ ka ịhụ mgbanwe ndị a:

2. Ọrụ nlele na-ewe arịrịọ HTTP wee weghachi nzaghachi HTTP. N'edemede a, def posts(arịrịọ) na views.py na-akpọ oku na nchekwa data dị n'okpuru iji weghachite posts niile. Ọ bụrụ na anyị chọrọ iweghachite niile posts na okwu nwere ike na aha, anyị kwesịrị dochie.

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

ya na

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

Site na ikewapụ ihe onye ọrụ na mgbagha ngwa na ngwa weebụ, Django na-akwado ọrụ nke idowe na ịbawanye ngwa ngwa.

3. Ọ bụrụ na ị gbasoro ntuziaka enyere na usoro a, nhazi nke ọrụ gị kwesịrị ịdị ka ndị a:

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

Ọ bụrụ na ndepụta dị n'elu egosighi nke ọma na ihe nchọgharị gị, nke a bụ nseta ihuenyo nke mmepụta nke iwu a:

# tree myfirstdjangoenv/myfirstdjangoproject

Nchịkọta

Ọ bụ ezie na echiche ndị a niile nwere ike iyi ka ọ dị ntakịrị egwu na mbụ, enwere m ike ijide n'aka na Django kwesịrị mgbalị niile dị mkpa iji mara ya.

Enwere m olileanya na ihe atụ nke anyị ji mee ihe n'usoro isiokwu a iji webata gị na usoro webụ a pụtara ìhè ga-akpali gị ịmụtakwu. Ọ bụrụ otu a, akwụkwọ gọọmentị Django (nke a na-edobe mgbe niile) bụ ebe kacha mma ịmalite.

Enwere m ike ime ka obi sie gị ike na enwere ọtụtụ ihe na Django karịa ka anyị nwere ike ikpuchi nke ọma na usoro isiokwu, yabụ nweere onwe gị inyocha ya wee mụta site na ime!

Enwere onwe gị iwere anyị ndetu nwere ajụjụ ma ọ bụ aro site na iji fọm dị n'okpuru.