django 快速搭建blog
Django?自稱是“最適合開發(fā)有限期的完美WEB框架”。本文參考《Django?web開發(fā)指南》,快速搭建一個blog?出來,在中間涉及諸多知識點,這里不會詳細(xì)說明,如果你是第一次接觸Django?,本文會讓你在感性上對Django有個認(rèn)識,完成本文操作后會讓你有興趣閱讀的相關(guān)書籍和文檔。
廢話少說,come?on!!
本操作的環(huán)境:
===================
Windows 7/10
python?2.7
Django?1.8.2
===================
?
?
?創(chuàng)建工程 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
創(chuàng)建mysite工程項目:
D:/djpy> django-admin.py startproject mysite工程目錄結(jié)構(gòu):
manage.py?-----?Django項目里面的工具,通過它可以調(diào)用django?shell和數(shù)據(jù)庫等。
settings.py?----?包含了項目的默認(rèn)設(shè)置,包括數(shù)據(jù)庫信息,調(diào)試標(biāo)志以及其他一些工作的變量。
urls.py?-----?負(fù)責(zé)把URL模式映射到應(yīng)用程序。
?
?
創(chuàng)建blog應(yīng)用 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
在mysite目錄下創(chuàng)建blog應(yīng)用
D:/pydj> cd mysite D:/djpy/mysite$ python manage.py startapp blog目錄結(jié)構(gòu):
?
?
初始化admin后臺數(shù)據(jù)庫 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
python?自帶SQLite數(shù)據(jù)庫,Django支持各種主流的數(shù)據(jù)庫,這里為了方便推薦使用SQLite,如果使用其它數(shù)據(jù)庫請在settings.py文件中設(shè)置。
切換到mysite創(chuàng)建數(shù)據(jù)庫:
D:/djpy/mysite$ python manage.py syncdbC:\Python27\lib\site-packages\django\core\management\commands\syncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9
warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning)
Operations to perform:Synchronize unmigrated apps: staticfiles, messagesApply all migrations: admin, contenttypes, auth, sessionsSynchronizing apps without migrations:Creating tables...Running deferred SQL...Installing custom SQL...Running migrations:Rendering model states... DONEApplying contenttypes.0001_initial... OKApplying auth.0001_initial... OKApplying admin.0001_initial... OKApplying contenttypes.0002_remove_content_type_name... OKApplying auth.0002_alter_permission_name_max_length... OKApplying auth.0003_alter_user_email_max_length... OKApplying auth.0004_alter_user_username_opts... OKApplying auth.0005_alter_user_last_login_null... OKApplying auth.0006_require_contenttypes_0002... OKApplying sessions.0001_initial... OK
You have installed Django's auth system, and don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'fnngj'): ? ?用戶名(默認(rèn)當(dāng)前系統(tǒng)用戶名)
Email address: fnngj@126.com ? ? 郵箱地址
Password: ? ? 密碼
Password (again): ? ?重復(fù)密碼
Superuser created successfully.
?
?
設(shè)置admin應(yīng)用 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
admin?是Django?自帶的一個后臺管理系統(tǒng)。
1、添加blog應(yīng)用,打開mysite/mysite/settings.py?文件:
# Application definition INSTALLED_APPS = ('django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','blog', )?在列表末尾,添加blog?應(yīng)用
?
2、在我們創(chuàng)建django項目時,admin就已經(jīng)創(chuàng)建,打開mysite/mysite/urls.py文件:
from django.conf.urls import include, url from django.contrib import adminurlpatterns = [url(r'^admin/', include(admin.site.urls)), ]?
3、啟動django容器
D:\pydj\mysite>python manage.py runserver Performing system checks...System check identified no issues (0 silenced). October 04, 2015 - 20:56:45 Django 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、訪問后臺應(yīng)用
http://127.0.0.1:8000/admin?
?輸入用戶、密碼,用戶名密碼為第一次創(chuàng)建數(shù)據(jù)庫時創(chuàng)建的。回想“設(shè)置數(shù)據(jù)庫”時的設(shè)置。
?
?
設(shè)計Model(即設(shè)計數(shù)據(jù)庫表)?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
1、設(shè)計model
現(xiàn)在我們打開blog目錄下的models.py文件,這是我們定義blog數(shù)據(jù)結(jié)構(gòu)的地方。打開mysite/blog/models.py?文件進(jìn)行修改:
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、?再次初始化數(shù)據(jù)庫
D:\pydj\mysite>python manage.py makemigrations blog Migrations for 'blog':0001_initial.py:- Create model BlogsPostD:\pydj\mysite>python manage.py syncdb C:\Python27\lib\site-packages\django\core\management\commands\syncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning)Operations to perform:Synchronize unmigrated apps: staticfiles, messagesApply all migrations: admin, blog, contenttypes, auth, sessions Synchronizing apps without migrations:Creating tables...Running deferred SQL...Installing custom SQL... Running migrations:Rendering model states... DONEApplying blog.0001_initial... OK?
?
3、再次runserver啟動服務(wù),訪問admin后臺,創(chuàng)建文章。
登陸成功選擇add?創(chuàng)建博客
輸入博客標(biāo)題,正文、日期時間、點擊save?創(chuàng)建博客。
?
?
?
設(shè)置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)?
創(chuàng)建BlogPostAdmin類,繼承admin.ModelAdmin父類,以列表的形式顯示BlogPost的標(biāo)題和時間。
?
?
創(chuàng)建blog的公共部分
從Django的角度看,一個頁面具有三個典型的組件:
一個模板(template):模板負(fù)責(zé)把傳遞進(jìn)來的信息顯示出來。
一個視圖(view):視圖負(fù)責(zé)從數(shù)據(jù)庫獲取需要顯示的信息。
一個URL模式:它負(fù)責(zé)把收到的請求和你的試圖函數(shù)匹配,有時候也會向視圖傳遞一些參數(shù)。
?
?
創(chuàng)建模板 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
在blog項目下創(chuàng)建templates目錄(mysite/blog/templates/),在目錄下創(chuàng)建模板文件index.html,內(nèi)容如下:
{% for post in posts %}<h2>{{ post.title }}</h2><p>{{ post.timestamp }}</p><p>{{ post.body }}</p> {% endfor%}?
?
創(chuàng)建視圖函數(shù) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
打開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()?:獲取數(shù)據(jù)庫里面所擁有BlogPost對象
render_to_response()返回一個頁面(index.html),順帶把數(shù)據(jù)庫中查詢出來的所有博客內(nèi)容(blog_list)也一并返回。
?
?
創(chuàng)建blog的URL模式 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
在mysite/urls.py文件里添加blog的url:
#coding=utf-8 from django.conf.urls import patterns, include, url from django.contrib import adminurlpatterns = patterns('',url(r'^admin/', include(admin.site.urls)),url(r'^index/$', 'blog.views.index'), )?
再次啟動服務(wù)($?python?manage.py?runserver),訪問blog應(yīng)用(http://127.0.0.1:8000/blog/)。
頁面如下:
當(dāng)然,讀者可以繼續(xù)到admin后臺添加blog,從而刷新這個頁是否顯示新添加的blog。
?
?
添加樣式 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
創(chuàng)建基礎(chǔ)模板
在mysite/blog/templates目錄里創(chuàng)建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>大人不華,君子務(wù)實</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 %}再次刷新博客頁面:
請系統(tǒng)的學(xué)習(xí)django?web框架,然后在此基礎(chǔ)上做更多的擴(kuò)展,開發(fā)自己真正的blog?。
總結(jié)
以上是生活随笔為你收集整理的django 快速搭建blog的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: django 快速实现完整登录系统(co
- 下一篇: django 快速实现注册