Python採用Django開發自己的部落格系統

來源:互聯網
上載者:User
好久之前就想做一下自己的部落格系統了,但是在網上查了查好像是需要會一些Node.js的相關知識,而且還要安裝辣麼多的庫什麼的,就不想碰了。但是我遇到了Django這麼一款神器,沒想到我的部落格系統就這麼建立起來了。雖然是最基礎的類型。但是也算是成功了,這篇部落格比較適合對Django有了一定瞭解的童鞋,如果是新手的話,建議先看一下django的基礎知識點再來做實驗,這樣效率更高!

好了,話不多說,開始吧。

搭建架構
•建立項目及應用

搭建架構的意思,就是安裝Django以及做好相關的配置。因為我是在PyCharm下進行建立的,所以工具代替我做了很多事情。但是底層也無非是下面幾行代碼:

建立一個Django項目,名為MyDjango

django-admin startproject MyDjango

建立一個Django應用,名為MyBlog。這裡應該注意的是應用隸屬於項目的子集。通俗的來說應用檔案夾是作為專案檔夾的子集而存在的。

django-admin startapp MyBlog

•建立資料庫及底層模型

我這裡簡單的以預設的sqlite3資料庫作為了我的部落格系統的資料庫了,當然你也可以自己制定需要的資料庫,一般來說sqlite3都能滿足需求。在setting.py裡面可以這樣進行設定。

# Database# https://docs.djangoproject.com/en/1.9/ref/settings/#databasesDATABASES = { 'default': {  'ENGINE': 'django.db.backends.sqlite3',  'NAME': 'MyBlog.db',  'USER':'',  'PASSWORD':'',  'HOST':'',  'PORT':'', }}

建好了資料庫,接下來就是模型的建立了。因為我建立的是部落格系統,所以必不可少的要發布關於部落格的內容,於是需要有標題,內容,發布時間這些屬性,詳情如models.py檔案

from __future__ import unicode_literalsfrom django.contrib import adminfrom django.db import models# create the blog modelclass BlogPost(models.Model): title = models.CharField(max_length=150) body = models.TextField() timestamp = models.DateTimeField() def __unicode__(self):  return self.title


由於需要管理員對發布的部落格進行管理,所以我們要對發布的部落格設定一個管理模型,

# set the admin page for BlogPostclass BlogPostAdmin(admin.ModelAdmin): list_display = ('title','timestamp')# register the model (especially importantadmin.site.register(BlogPost)


所以整個models.py檔案裡面就應該是這樣的了。

from __future__ import unicode_literalsfrom django.contrib import adminfrom django.db import models# create the blog modelclass BlogPost(models.Model): title = models.CharField(max_length=150) body = models.TextField() timestamp = models.DateTimeField() def __unicode__(self):  return self.title# set the admin page for BlogPostclass BlogPostAdmin(admin.ModelAdmin): list_display = ('title','timestamp')# register the model (especially importantadmin.site.register(BlogPost)

接下來,就是同步一下資料庫和模型之間的聯絡了。如果不做同步操作的話,就很有可能報出
django.db.utils.OperationalError: unable to open database file
而且這裡也是很重要的一個環節。那就是關於Django版本的問題,我之前就在這上面栽過一次。

django < 1.7 時:
python manage.py syncdb

django > 1.7 時:
python manage.py makemigrations
python manage.py migrate

完善MVC模式

其實前面的步驟而言,我們已經是完成了model這個模組的功能了,接下來就是做好視圖的映射就可以了。
•V(views.py)視圖層

我們需要在這個檔案裡面定義好底層的邏輯處理。這決定著要返回給使用者一個什麼樣的response。至於採用哪種渲染方式,大家就不要在這上面浪費不必要的時間了。render_to_response就足夠了。

# create the view for blog showdef myBlogs(request): blog_list = BlogPost.objects.all() return render_to_response('BlogTemplate.html',{'blog_list':blog_list})

這裡面用到了模板檔案,還傳給了模板一個清單類型的參數,這些我們待會再敘。

•C(controller)urls.py

可以說這個檔案將Django各部分松耦合的功能銜接到了一起,完成了整個項目的運轉的非核心的核心了,是關於如何映射的邏輯的處理。接下來我們就將我們的部落格系統設定一下吧。

from django.conf.urls import urlfrom django.contrib import adminfrom MyBlog.views import *urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^myBlogs/$',myBlogs),]

關於如何映射,我的上一篇文章裡面有詳細的介紹,PyCharm開發Django基礎配置。有興趣的可以參考一下。好了,這次我們在完成了admin管理使用者的設定之後,就可以運行我們的程式了。

python manage.py runserver

出現了:

Performing system checks...System check identified no issues (0 silenced).June 05, 2016 - 11:39:27Django version 1.9.6, using settings 'MyDjango.settings'Starting development server at http://www.php.cn/:8000/Quit the server with CTRL-BREAK.

這時就可以在瀏覽器中輸入
http://127.0.0.1:8000/admin,登陸成功後可以點擊下面的Blog Posts編輯博文了。然後點擊SAVE 按鈕,就發行就緒我們的部落格。接下來在瀏覽器中輸入
http://127.0.0.1:8000/myBlogs/ 訪問我們的部落格系統了。

這樣就實現了我們的部落格系統的建立了。但是由於沒有添加樣式,所以看起來不是很好看,所以我們要添加以下模板的樣式。

模板配置

接著剛才的繼續,關於模板,這裡面可謂是有著很深的設計哲學。瞭解過的大家肯定都會有感觸,我就不多說了。
接下來就為我們的部落格系統設定一下模板吧。
•父模板base.html
按照django對模板的繼承設定,我們可以製作一個父模板。如下:

<!DOCTYPE html><html lang="zh"><head> <meta charset="UTF-8"> <title>標題</title></head><style type="text/css"> body{  color: #efd;  background: #BBBBBB;  padding: 12px 5em;  margin:7px; } h1{  padding: 2em;  background: #675; } h2{  color: #85F2F2;  border-top: 1px dotted #fff;  margin-top:2em; } p{  margin:1em 0; }</style><body><h1>XX博文</h1><h3>小生不才,但求簡約!</h3>{% block content %}{% endblock %}</body></html>

•然後就是子模板BlogTemplate.html

{% extends "base.html" %} {% block content %}  {% for post in blog_list %}   <h2>{{ post.title }}</h2>   <p>{{ post.timestamp }}</p>   <p>{{ post.body }}</p>  {% endfor %} {% endblock %}

需要注意的就是模板中的模板標籤以及模板變數都應該與views.py檔案對應的函數中的字典變數相一致,否則django雖然不會報錯,但也是不會顯示資料的。

接下來重新整理一下,輸入http://127.0.0.1:8000/admin/

點擊add按鈕,開始添加你的博文吧。

然後在瀏覽器中輸入
http://www.php.cn/:8000/myBlogs/.你就可以看到你的部落格列表了,

大家可能已經看到了,問題就出在點擊標題沒有進入到相關的詳情頁面,那是因為還沒有添加這個功能呢。(^__^) 嘻嘻……

總結

今天一起做了一個簡單的部落格系統,雖然外觀看起來並不是很好看,但是內容什麼的差不多就是這樣了。還有很多的地方需要完善。

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援topic.alibabacloud.com。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.