成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

編寫Django模型類

在應(yīng)用的文件中,我們首先需要定義兩個模型類:fenlei和picture。fenlei表示分類,而picture表示圖片。分類是圖片的外鍵,因?yàn)橐粡垐D片只能屬于一個分類,而一個分類可以有多張圖片。``

在應(yīng)用的文件中,我們首先需要定義兩個模型類:fenlei和picture。fenlei表示分類,而picture表示圖片。分類是圖片的外鍵,因?yàn)橐粡垐D片只能屬于一個分類,而一個分類可以有多張圖片。

```python

from django.db import models

class fenlei():

name (max_length20)

status (defaultTrue)

class Meta:

db_table 'fenlei'

class picture():

title (max_length50, blankTrue)

picpath (upload_to'test')

createtime (auto_now_addTrue, blankTrue)

fl (fenlei, on_delete, blankTrue)

class Meta:

db_table 'picture'

```

在fenlei模型類中,我們定義了name字段和status字段,name字段表示分類的名稱,status字段表示分類是否啟用。在picture模型類中,我們定義了title字段、picpath字段、createtime字段和fl字段。title字段表示圖片的標(biāo)題,picpath字段表示圖片的路徑,createtime字段表示圖片的創(chuàng)建時間,fl字段表示圖片所屬的分類,它是一個外鍵關(guān)聯(lián)fenlei模型類。

創(chuàng)建首頁路由

在工程同名文件夾的文件中,我們需要添加到首頁的路由,以便訪問到首頁。

```python

from import admin

from django.urls import path, include

from import static

from import settings

from pic import views

urlpatterns [

path('admin/', ),

path('', _view(), name'home'),

]

urlpatterns static(_URL, document_root_ROOT)

```

這段代碼中,我們導(dǎo)入了必要的模塊和視圖函數(shù)。然后,我們定義了一個空的路由,將它綁定到showpic視圖函數(shù),命名為home。

使用Bootstrap創(chuàng)建前端導(dǎo)航欄

在模板文件中,我們可以使用Bootstrap框架來創(chuàng)建前端導(dǎo)航欄。

```html

```

這段代碼中,我們使用了ul標(biāo)簽和li標(biāo)簽來創(chuàng)建一個無序列表,通過添加class屬性和Bootstrap提供的樣式類,我們可以實(shí)現(xiàn)導(dǎo)航欄的效果。

編寫視圖函數(shù)

在視圖函數(shù)中,我們需要處理數(shù)據(jù)并將其傳遞給模板文件進(jìn)行渲染。

```python

from import render

from import ListView

from import get_object_or_404

from .models import picture, fenlei

from utils import getpages

class showpic(ListView):

model picture

context_object_name 'pics'

template_name 'pic_'

paginate_by 3

f None

def get_context_data(self, *, object_listNone, kwargs):

context super(showpic,self).get_context_data(kwargs)

paginator ('paginator')

page ('page_obj')

pages getpages(paginator,page)

context['pages']pages

fenlei_list (statusTrue)

context['fenlei_list']fenlei_list

context['f'] self.f

print(context)

return context

def get_queryset(self):

self.f ('f',None)

if self.f:

fen get_object_or_404(fenlei,pkself.f)

return fen.picture_().order_by('-createtime')

else:

pics ().order_by('-createtime')

return pics

```

在這個視圖函數(shù)中,我們繼承了ListView類,并指定了模型類、上下文對象名稱、模板文件和分頁數(shù)量等屬性。我們還定義了一個變量f來保存當(dāng)前所選擇的分類。在get_context_data方法中,我們獲取分頁器和當(dāng)前頁對象,并通過調(diào)用自定義的getpages函數(shù)計(jì)算出頁碼列表,將其添加到上下文中。同時,我們還需要查詢所有啟用的分類并將其添加到上下文中。在get_queryset方法中,我們根據(jù)是否有選中分類的情況返回不同的查詢結(jié)果。

創(chuàng)建模板文件

在上一步的視圖函數(shù)中,我們指定了使用pic_作為模板文件進(jìn)行渲染。

```html

{% for pic in pics %}

{{ pic.title }}

分類:{{ }}

{% endfor %}

```

這段代碼中,我們使用了Bootstrap的card組件來展示每個圖片的標(biāo)題和分類信息。同時,我們通過調(diào)用pic.picpath.url獲取圖片的路徑,并將其作為img標(biāo)簽的src屬性值。在分頁部分,我們使用了Bootstrap的pagination組件來展示頁碼列表,并通過判斷當(dāng)前頁是否為當(dāng)前頁碼來應(yīng)用不同的樣式。最后,在表單部分,我們使用了select標(biāo)簽和option標(biāo)簽來展示分類列表,并通過判斷當(dāng)前所選擇的分類來設(shè)置selected屬性。

運(yùn)行Django服務(wù)器

最后,我們可以運(yùn)行Django服務(wù)器,在瀏覽器中查看效果。注意,需要提前創(chuàng)建超級用戶并上傳一張圖片,并創(chuàng)建兩個分類。

標(biāo)簽: