1. 程式人生 > >Django開發自己的博客系統

Django開發自己的博客系統

date go基礎 migration 會有 詳情 error function key rom

好久之前就想做一下自己的博客系統了,但是在網上查了查好像是需要會一些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 < 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 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://127.0.0.1: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://127.0.0.1:8000/myBlogs/.你就可以看到你的博客列表了,如圖
技術分享圖片

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

總結

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

有興趣的朋友可以私信討論或者在下面發評論哦,大家一起學習。

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow

Django開發自己的博客系統