使用django搭建博客並部署

2017/8/31 18:27:59html

爲了之後參考的方便,在這裏總結一下django搭建博客網站的主要步驟。如下大部分的內容,參考自Django中文文檔 - 看雲前端

須要強調的是,這裏使用的django版本是1.8。這是由於,不一樣版本之間的django之間存在必定的差別。python

1.安裝django

在命令行中使用以下命令安裝djangoweb

pip install django==1.8

安裝結束後,在命令行中輸入python,進入python命令行。而後嘗試導入djangosql

>>> import django
>>> django.get_version()
'1.8'

這說明,django安裝成功了。數據庫

2.建立項目mysite

在命令行中,使用cd命令進入你想存儲代碼的目錄,而後運行以下命令express

python django-admin.py startproject mysite

因而,當前目錄下創建了一個mysite目錄,結構以下apache

mysite/
    manage.py
    mysite/
        __init__.py
        setting.py
        urls.py
        wsgi.py

從外層的mysite目錄切換進去,經過以下命令,咱們就能運行服務器django

python manage.py runserver

http://127.0.0.1:8000/,咱們將看到以下頁面segmentfault

3.編輯setting.py

在mysite/settings.py中保存着django項目的配置。經過編輯它,能夠修改項目的配置。

設置語言版本

LANGUAGE_CODE = 'zh-cn'

注:在1.9及之後的版本中,須要使用'zh-hans'

更改時區

TIME_ZONE = 'Asia/Shanghai'

在這裏還能夠修改數據庫設置,這裏不作修改,使用默認sqlites數據庫。

修改完畢後,在命令行中運行以下命令,進行數據庫的同步

python manage.py syncdb

運行此命令後,命令行會詢問是否建立管理員帳戶。選擇是,由於這將會頗有用。

從新運行服務器,訪問http://127.0.0.1:8000/admin/,你將看到以下頁面

輸入剛剛設置的用戶名和密碼就能夠登陸到網站的管理界面了。開不開心?固然,如今尚未多少功能。

4.建立應用及後臺設置

使用以下命令,建立應用

python manage.py startapp blog

這將建立一個blog目錄,以下

blog/
    __init__.py
    admin.py
    models.py
    tests.py
    views.py

爲了激活這個應用,咱們編輯mysite/setting.py文件,在INSTALLED_APPS中加入‘blog’,以下

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
)

在blog/models.py中添加以下內容

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


class BlogsPost(models.Model):
    title = models.CharField(max_length = 150)
    body = models.TextField()
    timestamp = models.DateTimeField()

admin.site.register(BlogsPost)

其中,最後一行是爲了在管理界面添加BlogsPsot,以便管理。

運行以下命令,進行數據庫同步

python manage.py makemigrations
python manage.py migrate

啓動服務器,並登陸到網站的管理界面,你將看到

點擊Blogs posts後面的增長按鈕,建立文章。輸入標題,正文和日期時間,並保存你的文章。

接下來設置管理界面中blogs post顯示。在blog/models.py中添加以下內容

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

admin.site.register(BlogPostAdmin)

刷新以前的頁面,你將看到

到這裏,咱們完成了一個簡單的博客後臺。

5.使用markdown顯示你的博客

咱們寫前端部分,使得咱們能夠查看以前寫的博客。

首先,咱們在blog目錄下建立templates目錄,並添加模板文件index.html。如今咱們的blog目錄以下

blog/
    __pycache__/ ...
    migrations/  ...
    templates/
        index.html      
    __init__.py
    admin.py
    models.py
    tests.py
    views.py

在index.html中添加以下內容

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

接下來,咱們建立視圖函數,將數據庫中blogspost渲染到這個模板文件中。在blog/views.py中添加以下內容

from django.shortcuts import render_to_response

from blog.models import BlogsPost

def index(request):
    blog_list = BlogsPost.objects.all()
    return render_to_response('templates/index.html',{'blog_list':blog_list})

index函數將從數據庫中的BlogsPost對象查詢出來,渲染到index.html中,並返回index.html。咱們如今的任務是將這個函數綁定一個URL。

修改mysite/urls.py,以下

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^index/$','blog.views.index'),
]

如今運行服務器,訪問http://127.0.0.1:8000/index/,你將看到以下的頁面

接下來,對博文添加markdown支持。在blog/views.py修改index函數

from markdown import markdown

def index(request):
    blog_list = BlogsPost.objects.all()
    for post in blog_list:
        post.body=markdown(post.body,extensions=['table'])
    return render_to_response('index.html',{'blog_list':blog_list})

修改blog/templates/index.html爲

{% for post in blog_list %}
    <h2>{{post.title}}</h2>
    <p> {{post.timestamp}}</p>
    {% autoescape off %}
        {{post.body}}
    {% endautoescape %}
{% endfor %}

參考[4]介紹了{% autoescape off %}的含義

off的意思是關閉對html的轉義,而將off替換成on就表示進行html轉義,默認進行html轉義。

參考[7]介紹瞭如何在使得包markdown支持渲染表格。

從新編輯博文,訪問http://127.0.0.1:8000/index,咱們將看到

6.網站的部署

下載Apache2.4,下載地址

https://www.apachehaus.com/cgi-bin/download.plx#APACHE24VC09

解壓以後,修改Apache24/conf/httpd.conf中的如下內容(配合ctrl+f)

Define SRVROOT "D:/Apache24"  
ServerRoot "${SRVROOT}" 
Listen 0.0.0.0:8000

啓動Apache24/bin/httpd.exe程序,訪問http://127.0.0.1:8000,會在瀏覽器上看到Apache的歡迎界面。

下載mod_wsgi,下載地址

http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi

使用pip安裝下載的whl。安裝成功後,在命令行中運行以下命令

mod_wsgi-express module-config

拷貝輸出的三行結果,複製到Apache24/conf/httpd.conf的末尾。

將以下內容拷貝到Apache24/conf/httpd.conf的末尾。請將[~]替換爲你項目的地址。

#指定myweb項目的wsgi.py配置文件路徑  
WSGIScriptAlias / [~]/wsgi.py  
  
#指定項目路徑  
WSGIPythonPath [~]  
  
<Directory [~]/mysite>  
<Files wsgi.py>  
    Require all granted  
</Files>  
</Directory>  
  
Alias /static [~]/static   
<Directory [~]/static>   
    AllowOverride None  
    Options None  
    Require all granted  
</Directory>

而後在mysite/setting.py中添加或修改如下內容

DEBUG = False   
TEMPLATE_DEBUG = False        
ALLOWED_HOSTS = ['127.0.0.1', 'localhost']

完成這些以後,咱們還必須收集關於admin的靜態文件。

在mysite/setting.py中將如下內容

STATIC_URL = '/static/'  
#STATIC_ROOT = os.path.join(BASE_DIR, "static")  
TEMPLATE_DIRS = (  
    os.path.join(BASE_DIR, "templates"),   
)  
  
STATICFILES_DIRS = (  
    os.path.join(BASE_DIR, "static"),   
)

修改成

STATIC_URL = '/static/'  
STATIC_ROOT = os.path.join(BASE_DIR, "static")  
TEMPLATE_DIRS = (  
    os.path.join(BASE_DIR, "templates"),   
)    
STATICFILES_DIRS = (  
    #os.path.join(BASE_DIR, "static"),   
)

在manage.py的目錄下運行以下命令

python manage.py collectstatic

運行完畢以後,將上一步mysite/setting.py的設置還原。

按照一樣的方法在雲服務器上部署,效果如圖

基本的框架搭建好了,接下來就能夠修改網站的邏輯和樣式了,對網站進行進一步的完善了。

參考

[1] 看雲-django中文文檔1.8
[2] 蟲師-django快速搭建blog
[3] 一介碼農-在django中使用markdown
[4] 追夢者的部落格-django輸出html內容
[5] 蝸牛工做站-Django1.7+Apache2.4部署
[6] 小二走刀口-whl文件中找不到mod_wsgi.so文件解決辦法
[7] sggmentfault-django如何渲染markdown的表格

本文連接:http://www.superzhang.site/blog/django-build-blog

相關文章
相關標籤/搜索