Django快速搭建Blog

 創建工程     

 

創建mysite工程項目:

D:/djpy> django-admin.exe startproject mysite

工程目錄結構:

manage.py ----- Django項目裏面的工具,通過它可以調用django shell和數據庫等。

settings.py ---- 包含了項目的默認設置,包括數據庫信息,調試標誌以及其他一些工作的變量。

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

 

 

創建blog應用      

 

在mysite目錄下創建blog應用

D:/pydj> cd mysite
D:/djpy/mysite$ python manage.py startapp blog

目錄結構:

 

初始化admin後臺數據庫        

 

  python 自帶SQLite數據庫,Django支持各種主流的數據庫,這裏爲了方便推薦使用SQLite,如果使用其它數據庫請在settings.py文件中設置。

切換到mysite創建數據庫:

複製代碼

D:/djpy/mysite$ python manage.py migrate
D:/djpy/mysite$  python manage.py createsuperuser




 

設置admin應用     

  

  admin 是Django 自帶的一個後臺管理系統。

1、添加blog應用,打開mysite/mysite/settings.py 文件:

複製代碼

# Application definitionINSTALLED_APPS = (    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'blog',
)

複製代碼

 在列表末尾,添加blog 應用

 

2、在我們創建django項目時,admin就已經創建,打開mysite/mysite/urls.py文件:

複製代碼

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

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

複製代碼

 

3、啓動django容器

複製代碼

D:\pydj\mysite>python manage.py runserverPerforming 
system checks...
System check identified no issues (0 silenced).
October 04, 2015 - 20:56:45Django version 1.8.2, using settings 'mysite.settings'Starting development server at http://127.0.0.1:8000/Quit the server with CTRL-BREAK.

複製代碼

  

4、訪問後臺應用

http://127.0.0.1:8000/admin

 

 輸入用戶、密碼,用戶名密碼爲第一次創建數據庫時創建的。回想“設置數據庫”時的設置。

 

 

設計Model(即設計數據庫表)  

 

1、設計model

  現在我們打開blog目錄下的models.py文件,這是我們定義blog數據結構的地方。打開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()

admin.site.register(BlogsPost)

複製代碼

 

2、 再次初始化數據庫

複製代碼

D:\pydj\mysite>python manage.py makemigrations blog
Migrations for 'blog':
  0001_initial.py:    - Create model BlogsPost

D:\pydj\mysite>python manage.py migrate

複製代碼

 

 

3、再次runserver啓動服務,訪問admin後臺,創建文章。

  登陸成功選擇add 創建博客

wKiom1jGGPTBnGf_AAExTHR8UDI732.png-wh_50

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

 

 

 

設置admin 的BlogsPost界面   

 

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

複製代碼

from django.db import modelsfrom 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-8from django.shortcuts import renderfrom blog.models import BlogsPostfrom 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-8from django.conf.urls import patterns, include, urlfrom 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 %}

複製代碼


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章