ویوی لیست | List View
سلام
با بازتعریف ویوی قبلی می توانیم از مزایای CBV بهره مند شویم. در این مثال می خواهیم صفحۀ اصلی را تغییر دهیم. در این صفحه ما صرفا تمام بوردها را از دیتابیس گرفته و در HTML لیست می کنیم.
boards/views.py
from django.shortcuts import render
from .models import Board
def home(request):
boards = Board.objects.all()
return render(request, 'home.html', {'boards': boards})
به این صورت می توانیم لیست کردن مدل ها را با استفاده از GCBV بازنونیسی کنیم.
boards/views.py (مشاهده کد کامل)
from django.views.generic import ListView
from .models import Board
class BoardListView(ListView):
model = Board
context_object_name = 'boards'
template_name = 'home.html'
سپس باید ارجاع مربوطه را در ماژول urls.py تغییر دهیم.
myproject/urls.py (مشاهده کد کامل)
from django.conf.urls import url
from boards import views
urlpatterns = [
url(r'^$', views.BoardListView.as_view(), name='home'),
# ...
]
در صورت بازدید از صفحۀ اصلی خواهد دید که هیچ چیزی تغییر نکرده و تمام موارد مثل قبل کار می کند. اما در خصوص تست برنامه لازم است که تغییراتی را به دلیل استفاده از ویوهای مبتنی بر کلاس یا همان CBV انجام دهیم.
boards/tests/test_view_home.py (مشاهده کد کامل)
from django.test import TestCase
from django.urls import resolve
from ..views import BoardListView
class HomeTests(TestCase):
# ...
def test_home_url_resolves_home_view(self):
view = resolve('/')
self.assertEquals(view.func.view_class, BoardListView)
ترجمۀ اختصاصی توسط تمدن
مطلب بعدی: صفحه بندی و شماره گذاری صفحات
مطلب قبلی: تست ویوی بروزرسانی

دیدگاه خود را ثبت کنید
تمایل دارید در گفتگو شرکت کنید؟نظری بدهید!