經過django 速成 blog

 

一、            建立項目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’爲升序

相關文章
相關標籤/搜索