首頁  >  文章  >  後端開發  >  Python採用Django開發自己的部落格系統

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

高洛峰
高洛峰原創
2017-02-25 11:17:142095瀏覽

好久之前就想做一下自己的部落格系統了,但是在網路上查了查好像是需要會一些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/#databases
DATABASES = {
 'default': {
  'ENGINE': 'django.db.backends.sqlite3',
  'NAME': 'MyBlog.db',
  'USER':'',
  'PASSWORD':'',
  'HOST':'',
  'PORT':'',
 }
}

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

from __future__ import unicode_literals
from django.contrib import admin
from django.db import models


# create the blog model

class 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 BlogPost

class BlogPostAdmin(admin.ModelAdmin):
 list_display = ('title','timestamp')


# register the model (especially important

admin.site.register(BlogPost)


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

from __future__ import unicode_literals
from django.contrib import admin
from django.db import models


# create the blog model

class 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 BlogPost

class BlogPostAdmin(admin.ModelAdmin):
 list_display = ('title','timestamp')


# register the model (especially important

admin.site.register(BlogPost)

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

 django     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 show

def 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 url
from django.contrib import admin
from 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:27
Django 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按钮,开始添加你的博文吧。

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

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

然后在浏览器中输入
http://www.php.cn/:8000/myBlogs/.你就可以看到你的博客列表了,如图

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

大家可能已经看到了,问题就出在点击标题没有进入到相关的详情页面,那是因为还没有添加这个功能呢。(^__^) 嘻嘻……

总结

今天一起做了一个简单的博客系统,虽然外观看起来并不是很好看,但是内容什么的差不多就是这样了。还有很多的地方需要完善。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHP中文网。

更多Python採用Django開發自己的部落格系統相关文章请关注PHP中文网!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn