python web開發 Django後台管理

2021-08-13 23:05:48 字數 4701 閱讀 3512

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比較...