Django:快速搭建简单的Blog
一,創建項目
1, 為blog創建名為mysite的工程項目:
django-admin.py startproject mysite2, 項目結構如下:
mysite├── manage.py└── mysite├── __init__.py├── settings.py├── urls.py└── wsgi.py-
manage.py ----- Django項目里面的工具,通過它可以調用django shell和數據庫等。
-
settings.py ---- 包含了項目的默認設置,包括數據庫信息,調試志以及其他一些工作的變量。
-
urls.py ----- 負責把URL模式射到應用程序。
二 ,運行開發服務器
要馬上查看django項目應用的運行,可以使用Django項目里的mange.py
切換到工程目錄,執行運行服務器命令:
python manage.py runserver完成:
打開瀏覽器,輸入訪問地址:127.0.0.1:8000
三,創建Blog應用
python manage.py startapp blogblog應用文件結構如下:
├── blog │ ├── admin.py │ ├── __init__.py │ ├── models.py │ ├── tests.py │ └── views.py四,設計的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/下,執行如下命令:
<span ><span >python manage.py syncdb<br></span></span>出現下面的提示,輸入yes,然后按照提示輸入相關的信息。完成后會生成一個數據庫文件db.sqlite3
六,設置自動admin應用
1,打開mysite/mysite/urls.py,取消注釋url(r'^admin/', include(admin.site.urls))
2,編輯mysite/mysite/settings.py,在INSTALLED_APPS里面添blog應用。
添后的代如下:
<span ><span ># Application definition INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', )<br></span></span>2,修改mysite/blog/models.py
在最后添一行代:
<span ><span >admin.site.register(BlogPost)<br></span></span>models.py完整的代如下:
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)3 ,打開瀏覽器,輸入http://127.0.0.1:8000/admin/,輸入剛才創建數據庫時候填寫的帳號就能進入admin界面。
七,試用admin
1, 點擊Blog Posts右側的Add 按鈕,添一個帖子。
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)八,建立Blog的公共部分
從Django的角度看,一個頁面具有三個典型的組件:
-
一個模板(template):模板負責把遞進來的信息顯示出來。
-
一個視圖(viw):視圖負責從數據庫獲取需要顯示的信息。
-
一個URL模式:它負責把收到的請求和的試圖函數匹配,有時候也會向視圖遞一些參數。
1,創建模板
在blog目錄下建立template目錄(mysite/blog/templates),創建模板文件archive.html,它的內容如下:
{% for post in posts %} <h2>{{ post.title }}</h2> <p>{{ post.timestamp }}</p> <p>{{ post.body }}</p> {% endfor%}2,創建一個視圖函數
在app應用的目錄下的view.py添視圖函數
from django.shortcuts import render from django.template import loader,Context from django.http import HttpResponse from blog.models import BlogPost# Create your views here.def archive(request):posts = BlogPost.objects.all()t = loader.get_template("archive.html")c = Context({'posts':posts})return HttpResponse(t.render(c))-
posts = BlogPost.objects.all() :獲取數據庫里面所擁有BlogPost對象
-
t = loader.get_template("archive.html"):載模板
-
c = Context({'posts':posts}):模板的渲染的數據是有一個字典類的對象Context提供,這里的是一對鍵值對。
3,創建一個URL模式
第一步,在mysite/urls.py里面取消下面的一行注釋:
#把它變成:
url(r'^blog/', include('blog.urls')),第二步:在blog應用里面定義URL,創建一個urls.py(mysite/blog/urls.py)
from django.conf.urls import * from blog.views import archiveurlpatterns = patterns('',url(r'^$',archive),)最后,在瀏覽器輸入如下地址http://127.0.0.1:8000/blog/
九,最后的潤色
1,模板的精確定位
在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>my blog</h1>{% block content %}{% endblock %}</body> </html>2,修改archive.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 %}刷新瀏覽器可以看到效果如下:
3,按日期排序
修改blog 應用下的models.py,為BlogPost添一個Meta嵌套類。如下:
<span >class BlogPost(models.Model):title = models.CharField(max_length = 150)body = models.TextField()timestamp = models.DateTimeField()class Meta:ordering = ('-timestamp',)<br></span>刷新瀏覽器,如下:
文章出處:?開源中國?文章地址:?http://my.oschina.net/matrixchan/blog/184445?
本文地址:?http://www.webrube.com/django-python-web_rube/2057?
本文由?嚕吧?整理,轉載請保留以上信息; 如有侵犯您的版權, 請聯系微信: 3715397 。
轉載于:https://www.cnblogs.com/jxrichar/p/3840793.html
總結
以上是生活随笔為你收集整理的Django:快速搭建简单的Blog的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux出现NOKEY
- 下一篇: KMP算法----java实现