現(xiàn)在正式開始博客開發(fā)
1、安裝django1.4
如果你使用的是fedoraDVD版,安裝時(shí)選擇了web開發(fā)組建,這一步可以省略,因?yàn)樗詭jango環(huán)境
django下載地址 https://www.djangoPRoject.com/download/ 這里我們選擇最新版
然后在終端下打開下載目錄
tar xzvf Django-*.tar.gz 。cd Django-* 。sudo python setup.py install
如果系同時(shí)window
解壓后再控制臺(tái)進(jìn)入解壓后的目錄
python setup.py install
測(cè)試安裝
打開Python的交互解釋器
如果出現(xiàn)以下內(nèi)容,安裝成功!
>>> import django>>> django.VERSION(1, 4, 1, 'final', 0)
2、新建project
打開終端 輸入
django-admin startproject blog
有些需要輸入
django-admin.py startproject blog
你會(huì)發(fā)現(xiàn)主文件夾下多出一個(gè)目錄 blog
目錄結(jié)構(gòu)為
blog/ manage.py blog/ __init__.py settings.py urls.py wsgi.py
manage.py :一種命令行工具,可讓你以多種方式與該 Django 項(xiàng)目進(jìn)行交互。 鍵入python manage.py help,看一下它能做什么。
__init__.py :讓 Python 把該目錄當(dāng)成一個(gè)開發(fā)包 (即一組模塊)所需的文件。 這是一個(gè)空文件,一般你不需要修改它
settings.py :該 Django 項(xiàng)目的設(shè)置或配置。 查看并理解這個(gè)文件中可用的設(shè)置類型及其默認(rèn)值
urls.py:django項(xiàng)目的URL設(shè)置。 可視其為你的django網(wǎng)站的目錄
wsgi.py: An entry-point for WSGI-compatible webservers to serve your project.See How to deploy with WSGI for more details.
具體使用方法參考 文檔 https://docs.djangoproject.com/en/1.4/intro/tutorial01/
運(yùn)行服務(wù)器
在終端打開項(xiàng)目目錄 輸入
python manage.py runserver
Validating models...0 errors foundDjango version 1.4.1, using settings 'blog.settings'Development server is running at http://127.0.0.1:8000/Quit the server with CONTROL-C.
出現(xiàn)以上選項(xiàng)說明運(yùn)行服務(wù)器成功
訪問 http://127.0.0.1:8000/ 你將看到
3、新建blogapp
在終端打開項(xiàng)目目錄輸入
python manage.py startapp sblog
現(xiàn)在新建好了一個(gè)名為sblog的博客應(yīng)用
sblog/ __init__.py models.py tests.py views.py
這個(gè)目錄包含了這個(gè)app的模型和視圖
4、models的配置
因?yàn)槭褂胊pp必須用到數(shù)據(jù)庫,現(xiàn)在我們配置一下數(shù)據(jù)庫 打開setting.py
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'MySQL', 'sqlite3' or 'Oracle'. 'NAME': '/home/gs/blog/datas/mydata.db', # 這里是我數(shù)據(jù)庫文件存放的目錄,你應(yīng)該替換成你自己的. 'USER': '', # Not used with sqlite3. 'PASSWord': '', # Not used with sqlite3. 'HOST': '', # Set to empty string for localhost. Not used with sqlite3. 'PORT': '', # Set to empty string for default. Not used with sqlite3. }}
因?yàn)閜ython自帶sqlite3,為了方便我們就直接使用。
其它數(shù)據(jù)庫的配置參見 https://docs.djangoproject.com/en/1.4/ref/databases/
現(xiàn)在我們配置models.py
from django.db import modelsclass Tag(models.Model): """docstring for Tags""" tag_name = models.CharField(max_length=20, blank=True) create_time = models.DateTimeField(auto_now_add=True) def __unicode__(self): return self.tag_nameclass Author(models.Model): """docstring for Author""" name = models.CharField(max_length=30) email = models.EmailField(blank=True) website = models.URLField(blank=True) def __unicode__(self): return u'%s' % (self.name)class Blog(models.Model): """docstring for Blogs""" caption = models.CharField(max_length=50) author = models.ForeignKey(Author) tags = models.ManyToManyField(Tag, blank=True) content = models.TextField() publish_time = models.DateTimeField(auto_now_add=True) update_time = models.DateTimeField(auto_now=True) def __unicode__(self): return u'%s %s %s' % (self.caption, self.author, self.publish_time)
安裝 models
首先修改setting.py
MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.locale.LocaleMiddleware', # Uncomment the next line for simple clickjacking protection: # 'django.middleware.clickjacking.XFrameOptionsMiddleware',)INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', # Uncomment the next line to enable the admin:'django.contrib.admin', # Uncomment the next line to enable admin documentation: 'django.contrib.admindocs', 'sblog', )
然后,用下面的命令對(duì)校驗(yàn)?zāi)P偷挠行裕?/p>
python manage.py validate
validate 命令檢查你的模型的語法和邏輯是否正確。 如果一切正常,你會(huì)看到 0 errors found 消息。 如果有問題,它會(huì)給出非常有用的錯(cuò)誤信息來幫助你 修正你的模型。
最后
python manage.py syncdb
你將看到類似與下面的內(nèi)容
Creating tables ...Creating table auth_permissionCreating table auth_group_permissionsCreating table auth_groupCreating table auth_user_user_permissionsCreating table auth_user_groupsCreating table auth_userCreating table django_content_typeCreating table django_sessionCreating table django_siteCreating table django_admin_logCreating table sblog_tagCreating table sblog_authorCreating table sblog_blog_tagsCreating table sblog_blog
因?yàn)槲覀冃薷膕etting.py時(shí)將
'django.contrib.admin','django.contrib.admindocs',
注釋去掉了,所以在 執(zhí)行
python manage.py syncdb
時(shí)會(huì) 出現(xiàn)You just installed Django's auth system, which means you don't have any superusers defined.Would you like to create one now? (yes/no): 讓我們新建用戶用于admin管理 ,創(chuàng)建用戶就可以了5、admin的配置使用修改blog 目錄下 urls.py添加
from django.contrib import adminadmin.autodiscover()
在 patterns 添加 (如果一直沒改過該文件的話 只要將這兩行注釋去掉就可以了)
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),url(r'^admin/', include(admin.site.urls)),此時(shí) 打開 http://127.0.0.1:8000/admin/
如果你發(fā)現(xiàn)我們新建的sblog并沒有出現(xiàn),恭喜你,你有很強(qiáng)的觀察能力,很細(xì)心,很。。。。
我還是接著說怎么用admin管理我們的sblog吧。
首先再sblog目錄下新建admin.py 添加以下內(nèi)容 再刷新admin頁面 將會(huì)有驚喜哦
#!/usr/bin/python# -*- coding: utf-8 -*-from django.contrib import adminfrom sblog.models import Author, Blog, Tagclass AuthorAdmin(admin.ModelAdmin): """docstring for AuthorAdmin""" list_display = ('name', 'email', 'website') search_fields = ('name',)class BlogAdmin(admin.ModelAdmin): """docstring for BlogAdmin""" list_display = ('caption', 'id', 'author', 'publish_time') list_filter = ('publish_time',) date_hierarchy = 'publish_time' ordering = ('-publish_time',) filter_horizontal = ('tags',) # raw_id_fields = ('author',) # 它是一個(gè)包含外鍵字段名稱的元組,它包含的字段將被展現(xiàn)成`` 文本框`` ,而不再是`` 下拉框`` 。admin.site.register(Author, AuthorAdmin)admin.site.register(Blog, BlogAdmin)admin.site.register(Tag)其中 AuthorAdmin 和 BlogAdmin 是 自定義ModelAdmi類 用于自定義admin顯示
list_display = ('caption', 'id', 'author', 'publish_time') 表示 按照 caption id author publish_time 顯示 另外,點(diǎn)擊每個(gè)列的列頭可以對(duì)那列進(jìn)行排序。
search_fields = ('name',) 刷新瀏覽器,你會(huì)在頁面頂端看到一個(gè)查詢欄。我們剛才所作的修改列表頁面,添加了一個(gè)根據(jù)姓名查詢的查詢框
list_filter = ('publish_time',) 用于在右邊生成一個(gè)過濾器,按照發(fā)表時(shí)間過濾
date_hierarchy = 'publish_time' 也是時(shí)間過濾器 修改好后,頁面中的列表頂端會(huì)有一個(gè)逐層深入的導(dǎo)航條,它從可用的年份開始,然后逐層細(xì)分到月乃至日。
ordering = ('-publish_time',) 按照發(fā)表時(shí)間排序 默認(rèn)是從前往后排序 加‘-’表示將最近發(fā)表的放到前面,從后往前倒序排列
filter_horizontal = ('tags',) 用于多對(duì)多字段顯示,出現(xiàn)一個(gè)精巧的javaScript過濾器,它允許你檢索選項(xiàng),然后將選中的tag從Available框移到Chosen框,還可以移回來
其它一些自定義方法參見文檔吧 https://docs.djangoproject.com/en/1.4/ref/contrib/admin/
到現(xiàn)在為止,我們已經(jīng)可以使用admin管理我們的博客
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注