1. 程式人生 > >Django:快速搭建自己打第一個的Blog

Django:快速搭建自己打第一個的Blog

摘要: 利用Django快速搭建一個簡單的Blog。參考自《Django Web開發指南》第二章。

一直有種想要搭建自己部落格系統打衝動,可惜需要前端知識較多,而且還要安裝一系列軟體並配置(windows平臺),後來偶然發現了Django這個神器,恰巧剛學過python,於是就又裝了ubuntu(安裝各種軟體配置都方便),折騰了半天,終於搭建起來自己的第一個簡易部落格。讓我們開始吧。

一,建立專案

1,為blog建立名為mysite的工程專案:

django-admin startproject mysite

2, 專案結構如下:
.
└── mysite
    ├── manage.py
    └── mysite
        ├── __init__.py
        ├── settings.py
        ├── urls.py
        └── wsgi.py
  • manage.py ----- Django專案裡面的工具,通過它可以呼叫django shell和資料庫等。

  • settings.py ---- 包含了專案的預設設定,包括資料庫資訊,除錯標誌以及其他一些工作的變數。

  • urls.py ----- 負責把URL模式對映到應用程式。

二,執行開發伺服器

切換到工程目錄,執行執行伺服器命令:

[email protected]:~/csdn/mysite$ python manage.py runserver
Validating models...


0 errors found
December 04, 2016 - 02:35:16
Django version 1.6.1, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

開啟瀏覽器,輸入訪問地址:127.0.0.1:8000


三,建立blog應用
python manage.py startapp blog

mysite應用檔案結構如下:

[email protected]:~/csdn/mysite$ tree

[email protected]:~/csdn/mysite$ tree
.
├── blog
│   ├── admin.py
│   ├── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── manage.py
└── mysite
    ├── __init__.py
    ├── __init__.pyc
    ├── settings.py
    ├── settings.pyc
    ├── urls.py
    ├── urls.pyc
    ├── wsgi.py
    └── wsgi.pyc

四,設計你的Model

在blog目錄下的models.py是blog應用打核心檔案之一,是定義blog資料結構的地方。修改models.py,新新增BlogPost類,程式碼如下:

from django.db import models

# Create your models here.
class BlogPost(models.Model):
    title = models.CharField(max_length = 150)
    body = models.TextField()
    timestamp = models.DateTimeField()

BlogPost類是django.db.models.Model的一個子類 。它有變數title(blog的標題),body(blog的內容部分),timestamp(blog的發表時間)。

五,設定資料庫

 Dajango支援主流的資料庫伺服器(MySQL,PostgreSQL,Oracle和MSSQL),在這裡使用的是SQLite,這裡之需要通過一條簡單的命令可以建立SQLite資料庫。

建立資料庫:

切換到工程主目錄mysite/下,執行如下命令:

python manage.py syncdb
出現下面的提示,輸入yes,然後安裝提示輸入相關資訊即可。完成後會生成一個數據庫檔案db.sqllite3。
[email protected]:~/csdn/mysite/blog$ cd ..
[email protected]:~/csdn/mysite$ python manage.py syncdb
Creating tables ...
Creating table django_admin_log
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no):  

之後檔案目錄如下:
hu[email protected]:~/csdn/mysite$ tree
.
├── blog
│   ├── admin.py
│   ├── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── db.sqlite3
├── manage.py
└── mysite
    ├── __init__.py
    ├── __init__.pyc
    ├── settings.py
    ├── settings.pyc
    ├── urls.py
    ├── urls.pyc
    ├── wsgi.py
    └── wsgi.pyc

六,設定自動admin應用

1,開啟mysite/mysite/urls.py,取消註釋url(r'^admin/', include(admin.site.urls))

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'mysite.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
)

2,編輯mysite/mysite/settings.py,在INSTALLED_APPS裡面新增blog應用。

    新增後的程式碼如下:

# Application definition

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

3,修改mysite/blog/models.py

在最後新增一行程式碼:

admin.site.register(BlogPost)
程式碼如下:
from django.db import models
from django.contrib import admin
# Create your models here.
class BlogPost(models.Model):
	title = models.CharField(max_length = 150)
	body = models.TextField()
	timestamp = models.DateTimeField()

admin.site.register(BlogPost)

4,開啟瀏覽器,輸入http://127.0.0.1:8000/admin/,輸入剛才建立資料庫時候填寫的帳號就能進入admin介面。


七,使用admin

1, 點選Blog Posts右側的Add和Save按鈕,新增一個帖子。


2,讓admin的BlogPost介面更加美觀

修改blog應用的models.py,為它新增一個admin.ModelAdmin的子類BlogPostAdmin.以列表形式顯示BlogPost的標題和時間。

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

# Create your models here.
class BlogPost(models.Model):
	title = models.CharField(max_length = 150)
	body = models.TextField()
	timestamp = models.DateTimeField()

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

admin.site.register(BlogPost,BlogPostAdmin)
重新整理瀏覽器,如若出現如下問題:



在mysite目錄執行如下命令,後再次重新整理。

[email protected]:~/csdn/mysite$ python manage.py syncdb
Creating tables ...
Creating table blog_blogpost
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)


八,建立Blog的公共部分。

從Django的角度看,一個頁面具有三個典型的元件:

  • 一個模板(template):模板負責把傳遞進來的資訊顯示出來。

  • 一個檢視(viw):檢視負責從資料庫獲取需要顯示的資訊。

  • 一個URL模式:它負責把收到的請求和你的試圖函式匹配,有時候也會向檢視傳遞一些引數。

其實前面的步驟而言,我們已經是完成了model這個模組的功能了,接下來就是做好檢視的對映就可以了。

  • V(views.py)檢視層

from django.shortcuts import *
from django.http import HttpResponse
from blog.models import BlogPost
from blog.views import *

# Create your views here.

def myBlogs(request):
 	blog_list = BlogPost.objects.all()
    	return render_to_response('BlogTemplate.html',{'blog_list':blog_list})
這裡面用到了模板檔案,還傳給了模板一個列表型別的引數。

在blog目錄下建立template目錄(mysite/blog/templates),建立模板檔案BlogTemplate.html,它的內容如下:

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

C(controller)urls.py

可以說這個檔案將Django各部分鬆耦合的功能銜接到了一起,完成了整個專案的運轉的非核心的核心了,是關於如何對映的邏輯的處理。

from django.conf.urls import patterns, include, url
from django.contrib import admin
from blog.views import *
#admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'mysite.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
    url(r'myblog',myblog),
)


輸入http://127.0.0.1:8000/myblog,就刻印訪問我們的部落格系統了。這樣就實現了我們部落格系統打建立,但是由於沒有新增樣式,看起來不是很好看,所以接下來我們要新增以下模板的樣式。


九,模板配置

接著剛才的繼續,關於模板,這裡面可謂是有著很深的設計哲學。瞭解過的大家肯定都會有感觸,我就不多說了。
接下來就為我們的部落格系統設定一下模板吧。

父模板base.html 按照django對模板的繼承設定,我們可以製作一個父模板。如下:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>huang's blog</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>Zhiyuan's博文</h1>
<h3>Talk is cheap,show me the code!</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 %}

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


好了,一個具備最基礎功能的部落格系統就搭建好了。以後再慢慢完善吧。歡迎大家一起討論學習!

感謝:

https://my.oschina.net/matrixchan/blog/184445

http://blog.csdn.net/marksinoberg/article/details/51589012

相關推薦

Django:快速搭建自己一個Blog

摘要: 利用Django快速搭建一個簡單的Blog。參考自《Django Web開發指南》第二章。 一直有種想要搭建自己部落格系統打衝動,可惜需要前端知識較多,而且還要安裝一系列軟體並配置(windows平臺),後來偶然發現了Django這個神器,恰巧剛學過python,於

SpringBoot系列二:搭建自己一個SpringBoot程序

快速 oot local 程序 源代碼 參考 xmlns 技術 don 一、根據官網手工搭建(http://projects.spring.io/spring-boot/#quick-start) 1、新建一個maven工程springbootfirst 2、 如果要想開

Django 快速搭建部落格 七節(文章詳情頁,markdown語法)

更多最新原創文章請訪問:最新原創主頁 更多最全原創文章請訪問:更多原創主頁 上一節我們把真正的index.html顯示出來了,只是一個摘要,接下來我們要做的是當我們點選標題或者繼續閱讀的時候,會開啟詳情頁 1 base.html的

Django 快速搭建部落格 三節(資料庫表設計)

上一節我們已經能在pycharm下新建了blog app了, 這個時候,我們需要設計一下部落格的資料庫設計 關於資料庫表的設計,作為新手的我們並不需要要求懂太多稍微的懂一些也就可以了,畢竟資料庫也是需要有一定的功底的, 這裡我們依據部落格學習,將部落格表

Unity進階之ET網路遊戲開發框架 05-搭建自己一個Scene

版權申明: 本文原創首發於以下網站: 部落格園『優夢創客』的空間:https://www.cnblogs.com/raymondking123 優夢創客的官方部落格:https://91make.top 優夢創客的遊戲講堂:https://91make.ke.qq.com 『優夢創客』的微信公眾號:um

django 快速搭建blog

html model 項目 from col import create onf sta http://www.cnblogs.com/fnng/p/3737964.html django 快速搭建blog 輸入博客標題,正文、日期時間、點擊save 創建博客。

django快速搭建blog系統

 一、Django的使用 建立一個工程 [[email protected] django-master]# django-admin.py startproject mysite

微信公共號(企業號)開發框架-gochat的從零開始教程(二): 5分鐘快速搭建自己的公共號

    上一章裡我們把前期準備和環境配置已經完成啦,本章講一下怎麼通過5分鐘快速搭建自己的公共號~     首先,前往github頁面下載gochat框架的原始碼 ,原始碼中已經包含了一個最基礎的公共號開發模版。(這裡非常非常希望大家在下載的

vs2017 開始自己一個C++程式

這是針對於部落格vs2017安裝和使用教程(詳細)的C++專案新建示例 1.點選選單欄-->檔案-->新建-->專案,我這裡以C++為例,右邊欄選擇Visual C++,中間選擇空專案,改變預設路徑 2.右鍵點選右邊欄helloworld工程下的“原始檔”

2018年9月26日Django的安裝以及建立一個Django專案和子模組

python字串物件的find()和index()方法的區別? index()和find()函式都是用於查詢字串,但是index()在沒有找到子串的時候會有報錯丟擲異常,影響程式執行。find()在找不到目標子串時不會丟擲異常,而是會返回-1,因此不會影響程式的執行。   函式

spark本地環境的搭建到執行一個spark程式

搭建spark本地環境 搭建Java環境 (1)到官網下載JDK 官網連結:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html (2)解壓縮到指定的目錄 >sudo t

使用falsk快速搭建自己的本地倉庫

1.建立模型 class MODLENAME(db.Model): __tablename__=TABLENAME COLUMN_NAME=db.Column(db.TYPE,OPTIONS) MODELNAME : 模型名稱

快速搭建自己的 KMS 伺服器

之前寫過一篇如何在 CentOS 中搭建 KMS 伺服器的文章,感興趣的可以點選此處檢視。文章的最後提供了已經安裝好 vlmcsd 的 VMware 虛擬機器檔案。這次就來介紹一下如何使用這個虛擬機器來快速的將 KMS 搭建好。 準備工作 VMWare Player:

go語言基礎知識-環境搭建以及編寫一個demo程式

Go語言是谷歌2009年推出的一種全新的程式語言,可以在不損失應用程式效能的情況下降低程式碼的複雜性。Google對Go寄予厚望。其設計是讓軟體充分發揮多核心處理器同步多工的優點,並可解決面向物件程式設計的麻煩。它具有現代的程式語言特色,如垃圾回收,幫助程式設計師處理瑣碎但重

自己一個Docker釋出任務

搭建一個簡單的Spring Cloud Eureka Server 服務,用maven的install 命令 在工作空間的的target 目錄下找到 相應的jar包 eureka-server-0.0.1-SNAPSHOT.jar 在centos 7系統中 /usr/loc

用dev-c++寫自己一個opengl程式

最近因為需要自己開始學習opengl,但是因為我用的是win7的作業系統,又不想為了學習這麼一個東西還要費勁的去下載安裝vs2008,所以選擇了dev-c++作為自己的開發工具。 但是由於對dev-c++不熟悉,在開始階段走了寫彎路,雖然解決了基本的問題,但是還有些問題自己沒

快速搭建自己的直播伺服器,完成屬於你的直播服務。

通過本文您能學到以下內容: 1 、動手搭建直播伺服器,完成一次對移動端支援的直播。 2、使用OBS推流。 3、使用html5網頁播放m3u8流媒體檔案。 一、動手搭建流媒體伺服器 這裡我們選用開源srs流媒體伺服器[https://github.com/ossrs/

阿里雲伺服器快速搭建自己的個人網站

https://yq.aliyun.com/articles/423918 阿里雲伺服器快速搭建自己的個人網站   https://www.aliyun.com/jiaocheng/127216.html 如何快速搭建個人網站(伺服器配置篇) &nb

最簡單的混合APP開發框架——搭建你的一個Ionic應用(一)

上次寫了一篇關於Ionic3的文章,但是對於從來沒有接觸過Ionic的開發者來說,可能不是太友好。為了讓更多的人瞭解這個非常好的混合應用開發框架,今天這篇文章主要介紹如何從零用最快的時間做一個Ionic APP。 一)為什麼是Ionic? 如果你以前從來沒有

快速搭建自己的物聯網平臺,zigbee協議(不會控制你的物聯網系統)

從事物聯網的研發已經走過第9個年頭了,見證著這個行業的衰興歷程,近2年國內搞物聯網平臺的不少,但是都很“小家子氣”,總想獨吞大餅。產品做得不夠開放,標準制定上沒有體系。動不動什麼 阿里生態鏈,小米生態鏈,京東生態圈之類,說到底他們就是想著怎麼控制你呢! 我們就不一樣,我們