卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

編寫(xiě)Django模型類(lèi)

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

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

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

創(chuàng)建首頁(yè)路由

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

```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ù)。然后,我們定義了一個(gè)空的路由,將它綁定到showpic視圖函數(shù),命名為home。

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

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

```html

```

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

編寫(xiě)視圖函數(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

```

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

創(chuàng)建模板文件

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

```html

{% for pic in pics %}

{{ pic.title }}

分類(lèi):{{ }}

{% endfor %}

```

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

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

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

標(biāo)簽: