1. 程式人生 > >django 快速搭建blog

django 快速搭建blog

html model 項目 from col import create onf sta

http://www.cnblogs.com/fnng/p/3737964.html

django 快速搭建blog

輸入博客標題,正文、日期時間、點擊save 創建博客。

技術分享

設置admin 的BlogsPost界面

  打開mysite/blog/models.py 文件,做如下修改:

技術分享
from django.db import models
from django.contrib import admin

# Create your models here.
class BlogsPost(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(BlogsPost,BlogPostAdmin)
技術分享

創建BlogPostAdmin類,繼承admin.ModelAdmin父類,以列表的形式顯示BlogPost的標題和時間。

技術分享

創建blog的公共部分

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

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

一個視圖(view):視圖負責從數據庫獲取需要顯示的信息。

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

創建模板

在blog項目下創建templates目錄(mysite/blog/templates/),在目錄下創建模板文件index.html,內容如下:

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

創建視圖函數

打開mysite/blog/views.py文件:

技術分享
#coding=utf-8
from django.shortcuts import render
from blog.models import BlogsPost
from django.shortcuts import render_to_response

# Create your views here.
def index(request):
    blog_list = BlogsPost.objects.all()
    return render_to_response(‘index.html‘,{‘blog_list‘:blog_list})
技術分享

blog_list = BlogPost.objects.all() :獲取數據庫裏面所擁有BlogPost對象

render_to_response()返回一個頁面(index.html),順帶把數據庫中查詢出來的所有博客內容(blog_list)也一並返回。

創建blog的URL模式

在mysite/urls.py文件裏添加blog的url:

技術分享
#coding=utf-8
from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns(‘‘,
    url(r‘^admin/‘, include(admin.site.urls)),
    url(r‘^index/$‘, ‘blog.views.index‘),
)
技術分享

再次啟動服務($ python manage.py runserver),訪問blog應用(http://127.0.0.1:8000/index/)下圖有錯,僅供參考。

頁面如下:

技術分享

當然,讀者可以繼續到admin後臺添加blog,從而刷新這個頁是否顯示新添加的blog。

添加樣式

創建基礎模板

在mysite/blog/templates目錄裏創建base.html的模板:

技術分享
<html>
      <style type="text/css">
        body{color:#efd;background:#453;padding:0 5em;margin:0}
        h1{padding:2em 1em;background:#675}
        h2{color:#bf8;border-top:1px dotted #fff;margin-top:2em}
        p{margin:1em 0}
      </style>
     
      <body>
        <h1>蟲師blog</h1>
        <h3>大人不華,君子務實</h3>
        {% block content %}
        {% endblock %}
      </body>
</html>
技術分享

修改index.html模板,讓它引用base.html模板和它的“content”塊。

技術分享
{% extends "base.html" %}
  {% block content %}
      {% for post in posts %}
      <h2>{{  post.title }}</h2>
      <p>{{ post.timestamp | date:"1,F jS"}}</p>
      <p>{{ post.body }}</p>
      {% endfor %}
  {% endblock %}
技術分享

再次刷新博客頁面:

http://127.0.0.1/index/ 下圖有錯,僅供參考。

技術分享

  請系統的學習django web框架,然後在此基礎上做更多的擴展,開發自己真正的blog

django 快速搭建blog