第1.3章 建立blog應用

來源:互聯網
上載者:User

1 建立blog
進入工程目錄,執行python manage.py startapp blog

產生了下方紅色方框中的系列檔案,裡面都是些空檔案,並沒有什麼真正的代碼,只是先佔住位置而已,只是告訴django這個app是項目的一部分而已。

在settings.py中找到INSTALLED_APPS,添加'blog',django用INSTALLED_APPS來決定系統裡不同部分的配置,包括自動化的admin應用、測試架構。

2 ORM
models.py是django的blog應用的核心部分,下面代碼定義了BlogPost類,它是django.db.models.Model的子類,也是ORM的核心。這個類定義了3個變數,還有一個隱藏的自增的、唯一的id變數。

from __future__ import unicode_literalsfrom django.db import modelsclass BlogPost(models.Model):    title = models.CharField(max_length=150)    body = models.TextField()    timestamp = models.DateTimeField();

資料庫使用sqlite,主要應為sqlite需要安裝,方便測試。執行命令python manage.py migrate建立資料表,使用工具SQLiteSpy可以查看到

再執行下面兩個命令建立來建立blog_blogpost表

python manage.py makemigrationspython manager.py migrate

執行python manage.py createsuperuser建立admin使用者
3 admin部分
在models.py中添加admin.site.register(BlogPost)

輸入http://127.0.0.1:8000/admin,會用admin使用者登入


點擊Add進入下圖:

儲存成功如下:

我應該不是第一個覺得顯示BlogPost Object不爽的人,於是做了下面方框的調整

重新整理一下頁面,就顯示了內容了

4 公眾部分
從django的角度來說,一個頁面具有三個典型的組件:
一個模板(template):模板負責將傳遞進來的資訊顯示出來(用一種類似Python字典的對象Context)
一個視圖(View)函數:負責擷取要顯示的資訊,通常都是從資料庫裡取得
一個URL模式:它用來把收到的請求和視圖函數匹配,有時也會向視圖傳遞一些參數。
編輯views.py

from django.template import loader,Contextfrom django.http import HttpResponsefrom blog.models import BlogPost# 每個django視圖函數都將django.http.HttpRequest對象作為它的第一個參數def archive(request):# 這一行使用ORM,擷取資料庫裡所有的BlogPost對象。    posts = BlogPost.objects.all()# 這裡告訴django模板的名稱就能建立模板對象    t = loader.get_template("archive.html")# django模板渲染的資料是由一個字典類的對象context提供的    c = Context({'posts':posts})# 每個django視圖函數都會返回一個django.http.HttpResponse對象。    return HttpResponse(t.render(c))

在blog中建立templates檔案夾,並建立archive.html

{% for post in posts %}<h2>{{post.title}}</h2><p>{{post.timestamp}}</p><p>{{post.body}}</p>{% endfor %}

在blog目錄下建立urls.py檔案,內容如下:

from django.conf.urls import urlfrom blog.views import archiveurlpatterns = [    url(r'^$', archive),]

在mysite中urls.py中添加如下:

from django.conf.urls import url, includefrom django.contrib import adminurlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'^blog/',include('blog.urls')),]

輸入http://127.0.0.1:8000/blog/,運行效果如下:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.