django自帶了管理後台,而且非常強大,這個模組是settings.py 中配置的django.contrib.admin應用。
我們首先來建立乙個後台管理員使用者,並為其設定密碼。
建立賬號:
python manage.py createsuperuser
會要求我們輸入使用者名稱、郵箱和密碼。
建立好之後,啟動伺服器:
python manage.py runserver
進入管理後台登陸介面,輸入剛才設定的使用者名稱和密碼就可以登陸了。
開啟polls/admin.py輸入如下**:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib import admin
from .models import question
# register your models here.
admin.site.register(question)
這樣在後台我們就可以編輯我們的question了。
調整字段順序
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib import admin
from .models import question
# register your models here.
class
questionadmin
(admin.modeladmin):
fields = ['pub_date','question_text']
admin.site.register(question,questionadmin)
這樣可以先新增日期,後新增問題內容。
對欄位分組
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib import admin
from .models import question
# register your models here.
class
questionadmin
(admin.modeladmin):
#fields = ['pub_date','question_text']
fieldsets = [
(none, ,
'date information',),
]admin.site.register(question,questionadmin)
每個欄位集指定html樣式類
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib import admin
from .models import question
# register your models here.
class
questionadmin
(admin.modeladmin):
# fields = ['pub_date','question_text']
fieldsets = [
(none, ,
'date information',),
]admin.site.register(question,questionadmin)
好了,我們已經有自己的question管理介面。 但是乙個question有多個choices,管理介面中並沒有將選項顯示出來。
有兩種方法來解決這個問題:
1.第一種是像我們為question做的一樣,在管理站點中註冊choice
# -*- coding: utf-8 -*-
from django.contrib import admin
from .models import question
# register your models here.
admin.site
.register(question)
admin.site
.register(choice)
2.在新增question時新增choice
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib import admin
from .models import question
# register your models here.
class
choiceinine
(admin.stackedinline):
model = choice
extra = 3
class
questionadmin
(admin.modeladmin):
fieldsets = [
(none, ,
'date information',),
]inlines = [choiceinine]
admin.site.register(question,questionadmin)
將choice改為單行輸入:
class
choiceinine
(admin.tabularinline):
預設地,django顯示每個物件的str()返回的內容。但有時如果我們能顯示個別的字段將很有幫助。我們使用list_display 選項來實現這個功能,它是乙個要顯示的欄位名稱的元組:
class
question
(models.model):
list_display=('question_text','pub_date')
修改模型如下:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
# create your models here.
class
question
(models.model):
question_text = models.charfield(verbose_name="問題",max_length=200)
pub_date = models.datetimefield(verbose_name="發布日期")
def__str__
(self):
return self.question_text
class
meta:
verbose_name = ('問題')
verbose_name_plural=verbose_name
class
choice
(models.model):
question = models.foreignkey(question)
choice_text = models.charfield(verbose_name='選項',max_length=200)
vote = models.integerfield(verbose_name='投票數',default=0)
def__str__
(self):
return self.choice_text
defmeta:
verbose_name = ('選項')
verbose_name_plural=verbose_name
自定義管理後台步驟如下:
1.建立乙個templates檔案,在myblog目錄下面(包含manage.py的目錄)。
2.讓系統識別該模板目錄,開啟settings.py,找到templates選項。
templates = [,},
]
3.在templates下建立乙個名為admin的資料夾,然後從django安裝的原目錄下(目錄為django/contrib/admin/templates)將模板頁面的原始檔admin/base_site.html拷貝到這個資料夾裡。
修改如下:
}|
}id="site-name">
href="
">
}a>
h1>
pythonweb開發 Python Web開發
參考原文 wsgi介面 wsgi web server gateway inte ce 是乙個介面,用來遮蔽底部的細節 如tcp的建立連線,http原始請求和響應格式等 wsgi介面定義非常簡單,只需要web開發者實現乙個函式,就可以響應客戶端的http請求。這個函式有兩個引數 environ 包含...
python web開發框架
django python web應用開發框架 django 應該是最出名的python框架,gae甚至erlang都有框架受它影響。django是走大而全的方向,它最出名的是其全自動化的管理後台 只需要使用起orm,做簡單的物件定義,它就能自動生成資料庫結構 以及全功能的管理後台。diesel 基...
Python Web開發框架
python中的web框架 flask例程 可重用成熟,穩健 可擴充套件性良好 提高開發速度 web框架中的概念 大包大攬的django 優點 完美文件。全套解決方案 cache,session,orm 強大的url路由配置 自助管理後台 缺點 系統緊耦合 自帶的orm不夠強大 template比較...