一、 建立項目css
33進入在python目錄下的scripts文件後執行html
django-admin.py startproject mysitepython
這樣就生成了名爲mysite 的工程。sql
可執行.\manage.py runserver 運行開發服務器此時, 終端下會輸出數據庫
登陸 http://127.0.0.1:8000/ 顯示這樣一個頁面django
同時終端會輸出[13/Aug/2014 01:05:14] "GET / HTTP/1.1" 200 1957服務器
從左往右依次爲時間戳、請求、http狀態碼 、 字節數app
二、 建立blog應用函數
執行 .\manage.py startapp blogpost
這樣就建立了blog app, 在項目(mysite)的目錄下會有blog的目錄。
以後還須要 在mysite 目錄下的sittting.py 中找到元組INSTALLED_APPS , 在元組的末尾添上‘blog.app’, (注意逗號)
三、 設計model
在models.py中加入下列代碼
from django.db import models
from django.contrib import admin
class BlogPost(models.Model):
title = models.CharField(max_length = 150)
body = models.TextField()
timestamp = models.DateTimeField()
四、 設置數據庫
若是是使用sqlite3,只需在setting.py 的 Databases字典中補全 前兩項 即‘ENGINE’: 'django.db.backends.sqlite3'
‘NAME’ = ****\django.db #爲數據存放地址,自定義
而後執行.\manage.py syncdb #同步數據 終端中,會看到下列輸出
Creating table auth_message
Creating table auth_group
……..
以後會被問一下與django.contrib.auth app有關的問題,許按步 驟填寫
五、 設置自動admin應用
在 settings.py 中 ‘django.contrib.auth’ 下添加下列一行
‘django.contrib.admin’
而後再次執行syncdb命令 ,
設置完app後, 須要爲它指定一個URL
在urls.py 中 去掉rl(r'^admin/', include(admin.site.urls)) 前的註釋符
最後, 在 models.py 導入admin
from django.contrib import admin
並在最後加上一行註冊model的代碼
admin.site.register(BlogPost)
六、 試用admin 登陸 127.0.0.1:8000/admin 後輸入 用戶名和密碼會看到一下頁面
隨意編輯幾篇 blog並保存。爲了然列表更美觀在models.py中添加blogpostadmin類,並將它加到註冊代碼裏
from django.db import models
from django.contrib import admin
class BlogPost(models.Model):
title = models.CharField(max_length = 150)
body = models.TextField()
timestamp = models.DateTimeField()
class Meta:
ordering = ('-timestamp',)
class BlogPostAdmin(admin.ModelAdmin):
list_display = ('title', 'timestamp')
admin.site.register(BlogPost, BlogPostAdmin) #regiet blogpost model
刷新一下頁面, 會看到
相比原先有了 title 和timestamp 欄
七、 創建blog的公共部分。
建立文件 archive.html 保存到blog\templates中內容以下
{% for post in posts %}
<h2>{{post.title}}</h2>
<p>{{post.timestamp|date}}</p>
<p>{{ post.body}}</p>
{% endfor %}
而後建立視圖函數打開blog\view.py文件並輸入:
from django.template import loader, Context
from django.http import HttpResponse
from mysite.blog.models import BlogPost
def archive(request):
posts = BlogPost.objects.all()
t = loader.get_template('archive.html')
c = Context({'posts': posts})
return HttpResponse(t.render(c))
以後再建立 url模式 在mysite/urls.py 添加
url(r'^blog/', include('mysite.blog.urls')),
這會捕捉任何以blog/開始的請求, 並傳遞給接下來的url模式
Mysite/blog/urls.py:
from django.conf.urls.defaults import *
from mysite.blog.views import archive
urlpatterns = patterns('',
url(r'^$', archive),
)
八、 最後潤色
建立base.html 文件, 並保存在mysite/blog/templates內容以下:
<html>
<style type="text/css">
body { color: #cdcdcd; backgroud:#cdcdcd; padding: 0 5em; margin: 0}
h1 { padding:2em 1em; backgroud: #675}
h2{color: #cdcdcd; border-top: 1px dotted #cdcdcd; margin-top; 2em}
p {margin: 1em 0}
</style>
<body>
<h1>mysite.example.com</h1>
{% block content %}
{% endblock %}
</body>
</html>
而後更新achive.html內容:
{% extends "base.html" %}
{% block content %}
{% for post in posts %}
<h2>{{post.title}}</h2>
<p>{{post.timestamp|date}}</p>
<p>{{ post.body}}</p>
{% endfor %}
{% endblock %}
運行後登錄http://127.0.0.1:8000/blog/
可在models.py文件中添加嵌套類 Meta:是blog 按順序排序
from django.db import models
from django.contrib import admin
class BlogPost(models.Model):
title = models.CharField(max_length = 150)
body = models.TextField()
timestamp = models.DateTimeField()
class Meta:
ordering = ('-timestamp',)
class BlogPostAdmin(admin.ModelAdmin):
list_display = ('title', '-timestamp')
admin.site.register(BlogPost, BlogPostAdmin) #regiet blogpost model
‘-timestamp’爲降序 ‘timestamp’爲升序