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
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年國內搞物聯網平臺的不少,但是都很“小家子氣”,總想獨吞大餅。產品做得不夠開放,標準制定上沒有體系。動不動什麼 阿里生態鏈,小米生態鏈,京東生態圈之類,說到底他們就是想著怎麼控制你呢! 我們就不一樣,我們