1 回答

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
我不知道在同一頁(yè)面中顯示類別和產(chǎn)品是否是個(gè)好主意(從性能的角度來看),但您可以使用以下代碼將 FBV 轉(zhuǎn)換為 CBV:
from django.views.generic import ListView
class PostCategoryView(ListView):
template_name = 'posts_category.html'
def get_queryset(self):
slug = self.kwargs.get('slug')
return Posts.objects.filter(category__slug=slug, status="p")
def get_context_data(self, **kwargs):
context = super().get_context_data()
context['categories'] = Category.objects.all()
return context
并將您的更改urls為:
from django.urls import path
from .views import PostCategoryView
urlpatterns = [
path('<slug:slug>/', PostCategoryView.as_view(), name="posts_category"),
]
最后,您可以像下面的代碼一樣在模板中使用上下文數(shù)據(jù):
{% for obj in object_list %}
{{ obj.id }} - {{ obj.name }}</a><br>
{% endfor %}
請(qǐng)注意,這object_list是您的 Post 對(duì)象的列表,您應(yīng)該更改obj.name為 Post 模型的其他字段。最后,您可以使用類似的東西object_list(這里我們使用categories)并循環(huán)遍歷它以顯示您的類別或其他內(nèi)容的數(shù)據(jù)。
添加回答
舉報(bào)