日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django其他(站点、列表、上传

發(fā)布時(shí)間:2024/7/5 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django其他(站点、列表、上传 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.靜態(tài)文件:

  • 項(xiàng)目中的CSS、圖片、js都是靜態(tài)文件
  • 一般會(huì)將靜態(tài)文件放到一個(gè)單獨(dú)的目錄中,以方便管理
  • 在html頁面中調(diào)用時(shí),也需要指定靜態(tài)文件的路徑,Django中提供了一種解析的方式配置靜態(tài)文件路徑
  • 靜態(tài)文件可以放在項(xiàng)目根目錄下,也可以放在應(yīng)用的目錄下,由于有些靜態(tài)文件在項(xiàng)目中是通用的,所以推薦放在項(xiàng)目的根目錄下,方便管理

?

1.在項(xiàng)目/settings.py文件中定義靜態(tài)文件查找路徑

STATIC_URL ='/static/'
STATICFILES_DIRS = [
??? os.path.join(BASE_DIR,'static'),
]

?

2.在項(xiàng)目根目錄下創(chuàng)建static目錄,再創(chuàng)建img、css、js目錄

?

3.在應(yīng)用名稱booktest/views.py中定義視圖jingtai

defjingtai(request):
??? returnrender(request,'booktest/jingtai.html')

4.在booktest/urls.py中配置url

??? url(r'^jingtai/$',views.jingtai),

5.在templates/booktest/下創(chuàng)建jingtai.html文件

?

動(dòng)態(tài)配置:
{%load static from staticfiles%}
<img src="{%static "img/sg.png" %}"/>

?

?1.問題一:django如何確定當(dāng)前請(qǐng)求靜態(tài)文件?

??? http://127.0.0.1:8000/static/images/bjt.png

???答:請(qǐng)求路徑/static/images/bjt.png中開始的部分/static/

???settings.pySTATIC_URL進(jìn)行對(duì)比,如果相同則認(rèn)為是靜態(tài)文件

?

?? 2. 問題二:在磁盤的哪個(gè)目錄下找靜態(tài)文件?

???答:判斷后剩下路徑images/bjt.png

???方案一:與settings.py中的STATICFILES_DIRS進(jìn)行拼接

???方案二:在應(yīng)用目錄下的static目錄下查找

?

?

2.中間件

  • Django中的中間件是一個(gè)輕量級(jí)、底層的插件系統(tǒng),可以介入Django的請(qǐng)求和響應(yīng)處理過程,修改Django的輸入或輸出
  • 中間件的設(shè)計(jì)為開發(fā)者提供了一種無侵入式的開發(fā)方式,增強(qiáng)了Django框架的健壯性,其它的MVC框架也有這個(gè)功能,名稱為IoC
  • Django在中間件中常用方法不同的階段執(zhí)行:
  • process_request
  • process_view
  • process_response

?

?1.問題一:什么時(shí)候使用中間件?

??? 答:當(dāng)大部分的視圖中都需要執(zhí)行一段相同代碼時(shí)

?

??? 2.問題二:怎么用?

??? 答:定義類,選擇函數(shù),安裝

?

??? 3.問題三:使用哪個(gè)函數(shù)呢?

??? 答:根據(jù)代碼的執(zhí)行時(shí)間來判斷

?

?

?

3.Admin站點(diǎn)

  • 內(nèi)容發(fā)布的部分由網(wǎng)站的管理員負(fù)責(zé)查看、添加、修改、刪除數(shù)據(jù),開發(fā)這些重復(fù)的功能是一件單調(diào)乏味、缺乏創(chuàng)造力的工作,為此,Django能夠根據(jù)定義的模型類自動(dòng)地生成管理模塊
  • 在Django項(xiàng)目中默認(rèn)啟用Admin管理站點(diǎn)

?

1.準(zhǔn)備工作:創(chuàng)建管理員的用戶名和密碼:

python manage.pycreatesuperuser

?

  • 2.按提示填寫用戶名、郵箱、密碼

?

  • 3.使用:在應(yīng)用的admin.py中注冊(cè)模型類

fromdjango.contrib import admin
from models import *

admin.site.register(AreaInfo)

  • 4.輸入如下網(wǎng)址

http://127.0.0.1:8000/admin/

  • 5.按提示填寫用戶名、密碼,點(diǎn)擊“Log in”按鈕登錄

?

管理類有兩種使用方式

  • 1.注冊(cè)參數(shù):打開booktest/admin.py文件,注冊(cè)模型類代碼如下

admin.site.register(AreaInfo,AreaAdmin)

  • 2.裝飾器:打開booktest/admin.py文件,在管理類上注冊(cè)模型類,代碼如下

@admin.register(AreaInfo)
class AreaAdmin(admin.ModelAdmin):
??? pass

?

列表頁選項(xiàng)

頁大小

  • 每頁中顯示多少條數(shù)據(jù),默認(rèn)為每頁顯示100條數(shù)據(jù),屬性如下

list_per_page=100

?

“操作選項(xiàng)”的位置

  • 頂部顯示的屬性,設(shè)置為True在頂部顯示,設(shè)置為False不在頂部顯示,默認(rèn)為True

actions_on_top=True

?

列表中的列

  • 屬性如下

list_display=[模型字段1,模型字段2,...]

?

將方法作為列

  • 列可以是模型字段,還可以是模型方法,要求方法有返回值
  • 打開booktest/models.py文件,修改AreaInfo類如下

classAreaInfo(models.Model):
??? ...
??? def title(self):
??????? return self.atitle

  • 打開booktest/admin.py文件,修改AreaAdmin類如下

classAreaAdmin(admin.ModelAdmin):
??? ...
??
?list_display = ['id','atitle','title']

?

  • 方法列是不能排序的,如果需要排序需要為方法指定排序依據(jù)

admin_order_field=模型類字段

?

列標(biāo)題

  • 列標(biāo)題默認(rèn)為屬性或方法的名稱,可以通過屬性設(shè)置
  • 需要先將模型字段封裝成方法,再對(duì)方法使用這個(gè)屬性,模型字段不能直接使用這個(gè)屬性

short_description='列標(biāo)題'

?

關(guān)聯(lián)對(duì)象

  • 無法直接訪問關(guān)聯(lián)對(duì)象的屬性或方法,可以在模型類中封裝方法,訪問關(guān)聯(lián)對(duì)象的成員
  • 打開booktest/models.py文件,修改AreaInfo類如下

classAreaInfo(models.Model):
??? ...
??? def parent(self):
??????? return self.aParent.atitle
??
?parent.short_description='父級(jí)區(qū)域名稱'

?

右側(cè)欄過濾器

  • 屬性如下,只能接收字段,會(huì)將對(duì)應(yīng)字段的值列出來,用于快速過濾

list_filter=[]

?

搜索框

  • 屬性如下,用于對(duì)指定字段的值進(jìn)行搜索,支持模糊查詢

search_fields=[]

?

中文標(biāo)題

  • 打開booktest/models.py文件,修改模型類,為屬性指定verbose_name參數(shù),即第一個(gè)參數(shù)

classAreaInfo(models.Model):
??? atitle=models.CharField('
標(biāo)題',max_length=30)#名稱

?

編輯頁選項(xiàng)

顯示字段順序

  • 屬性如下

fields=[]

?

分組顯示

  • 屬性如下

fieldset=(
??? ('
1標(biāo)題',{'fields':('字段1','字段2')}),
??? ('
2標(biāo)題',{'fields':('字段3','字段4')}),
)

?

關(guān)聯(lián)對(duì)象

  • 在一對(duì)多的關(guān)系中,可以在一端的編輯頁面中編輯多端的對(duì)象,嵌入多端對(duì)象的方式包括表格、塊兩種
  • 類型InlineModelAdmin:表示在模型的編輯頁面嵌入關(guān)聯(lián)模型的編輯
  • 子類TabularInline:以表格的形式嵌入
  • 子類StackedInline:以塊的形式嵌入
  • 打開booktest/admin.py文件,創(chuàng)建AreaStackedInline類

classAreaStackedInline(admin.StackedInline):
??? model = AreaInfo#
關(guān)聯(lián)子對(duì)象
??? extra = 2#
額外編輯2個(gè)子對(duì)象

?

重寫模板

  • 在templates/目錄下創(chuàng)建admin目錄
  • 打開當(dāng)前虛擬環(huán)境中Django的目錄,再向下找到admin的模板
  • 將需要更改文件拷貝到第一步建好的目錄里,編輯文件

?

?

?

4.上傳圖片

  • 在Django中上傳圖片包括兩種方式:
  • 1.在管理頁面admin中上傳圖片
  • 2.自定義form表單中上傳圖片
  • 上傳圖片后,將圖片存儲(chǔ)在服務(wù)器上,然后將圖片的路徑存儲(chǔ)在表中

?

在管理頁面admin中上傳圖片

?

注冊(cè):admin.site.register(PicTest)

?

?

自定義form表單中上傳圖片

?

1.打開booktest/views.py文件,創(chuàng)建視圖

  • 2.打開booktest/urls.py文件,配置url
  • 3.在templates/booktest/目錄下創(chuàng)建模板pic_upload.html
  • 注:在模板中定義上傳表單,要求如下
  • ???????? form的屬性enctype="multipart/form-data"
  • ???????? form的method為post
  • ?????? ??input的類型為file

?

5.分頁

  • Django提供了數(shù)據(jù)分頁的類,這些類被定義在django/core/paginator.py中
  • 對(duì)象Paginator用于對(duì)列進(jìn)行一頁n條數(shù)據(jù)的分頁運(yùn)算
  • 對(duì)象Page用于表示第m頁的數(shù)據(jù)

?

Paginator對(duì)象

  • 方法init(列表,int):返回分頁對(duì)象,參數(shù)為列表數(shù)據(jù),每面數(shù)據(jù)的條數(shù)
  • 屬性count:返回對(duì)象總數(shù)
  • 屬性num_pages:返回頁面總數(shù)
  • 屬性page_range:返回頁碼列表,從1開始,例如[1, 2, 3, 4]
  • 方法page(m):返回Page對(duì)象,表示第m頁的數(shù)據(jù),下標(biāo)以1開始

?

Page對(duì)象

  • 調(diào)用Paginator對(duì)象的page()方法返回Page對(duì)象,不需要手動(dòng)構(gòu)造
  • 屬性object_list:返回當(dāng)前頁對(duì)象的列表
  • 屬性number:返回當(dāng)前是第幾頁,從1開始
  • 屬性paginator:當(dāng)前頁對(duì)應(yīng)的Paginator對(duì)象
  • 方法has_next():如果有下一頁返回True
  • 方法has_previous():如果有上一頁返回True
  • 方法len():返回當(dāng)前頁面對(duì)象的個(gè)數(shù)
  • 迭代頁面對(duì)象:訪問當(dāng)前頁面中的每個(gè)對(duì)象

?

總結(jié)

以上是生活随笔為你收集整理的Django其他(站点、列表、上传的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。