16
16
from django .core .paginator import Paginator
17
17
from django .core .paginator import EmptyPage
18
18
from django .core .paginator import PageNotAnInteger
19
+ from django .views .generic import ListView
20
+ from django .urls import reverse_lazy
19
21
20
22
21
-
23
+ #function based view home- FBC
22
24
def home (request ):
23
25
chatBoard = ChatBoard .objects .all ()
24
26
return render (request , 'home.html' ,{'chatBoard' :chatBoard })
25
27
26
- def board_topic (request ,pk ):
27
- #chat_board = ChatBoard.objects.get(pk=pk)
28
- chat_board = get_object_or_404 (ChatBoard , pk = pk )
28
+ #class based view -home
29
+ # class BoardListView(ListView):
30
+ # model = ChatBoard
31
+ # context_object_name = 'boards'
32
+ # template_name = 'home.html'
33
+
34
+
35
+ #FBV -board_topic
36
+ # def board_topic(request,pk):
37
+ # #chat_board = ChatBoard.objects.get(pk=pk)
38
+ # chat_board = get_object_or_404(ChatBoard, pk=pk)
39
+
40
+ # queryset = chat_board.topics.order_by('-lastUpdate').annotate(replies=Count('posts') -1)
41
+ # page = request.GET.get('page',1)
42
+
43
+ # paginator = Paginator(queryset, 20)
29
44
30
- queryset = chat_board .topics .order_by ('-lastUpdate' ).annotate (replies = Count ('posts' ) - 1 )
31
- page = request .GET .get ('page' ,1 )
45
+ # try:
46
+ # topics = paginator.page(page)
47
+ # except PageNotAnInteger:
48
+ # topics = paginator.page(1)
49
+ # except EmptyPage:
50
+ # topics = paginator.page(paginator.num_pages)
32
51
33
- paginator = Paginator (queryset , 10 )
52
+ # #topics = chat_board.topics.order_by('-lastUpdate').annotate(replies=Count('posts')-1)
53
+ # return render(request, 'chat_board_topics.html', {'chat_board': chat_board, 'topics':topics})
34
54
35
- try :
36
- topics = paginator . page ( page )
37
- except PageNotAnInteger :
38
- topics = paginator . page ( 1 )
39
- except EmptyPage :
40
- topics = paginator . page ( paginator . num_pages )
55
+ #CBV -board_topic
56
+ class TopicListView ( ListView ):
57
+ model = ChatTopic
58
+ context_object_name = 'topics'
59
+ template_name = 'chat_board_topics.html'
60
+ paginate_by = 20
41
61
62
+ def get_context_data (self , ** kwargs ):
63
+ kwargs ['chat_board' ] = self .chat_board
64
+ return super ().get_context_data (** kwargs )
65
+
66
+ def get_queryset (self ):
67
+ self .chat_board = get_object_or_404 (ChatBoard , pk = self .kwargs .get ('pk' ))
68
+ queryset = self .chat_board .topics .order_by ('-lastUpdate' ).annotate (replies = Count ('posts' ) - 1 )
69
+ return queryset
42
70
43
- #topics = chat_board.topics.order_by('-lastUpdate').annotate(replies=Count('posts')-1)
44
- return render (request , 'chat_board_topics.html' , {'chat_board' : chat_board , 'topics' :topics })
45
71
46
72
@login_required
47
73
def new_board_topic (request , pk ):
@@ -67,12 +93,30 @@ def new_board_topic(request, pk):
67
93
return render (request , 'new_board_topic.html' , {'chat_board' :chat_board , 'form' :form })
68
94
69
95
96
+ #FBV-topic_posts
97
+ # def topic_posts(request, pk, topic_pk):
98
+ # topic = get_object_or_404(ChatTopic, boardName__pk=pk, pk=topic_pk )
99
+ # topic.views += 1
100
+ # topic.save()
101
+ # return render(request, 'topic_posts.html', {'topic':topic})
70
102
71
- def topic_posts (request , pk , topic_pk ):
72
- topic = get_object_or_404 (ChatTopic , boardName__pk = pk , pk = topic_pk )
73
- topic .views += 1
74
- topic .save ()
75
- return render (request , 'topic_posts.html' , {'topic' :topic })
103
+ #CBV -topic_posts
104
+ class PostListView (ListView ):
105
+ model = Post
106
+ context_object_name = 'posts'
107
+ template_name = 'topic_posts.html'
108
+ paginate_by = 3
109
+
110
+ def get_context_data (self , ** kwargs ):
111
+ self .topic .views += 1
112
+ self .topic .save ()
113
+ kwargs ['topic' ] = self .topic
114
+ return super ().get_context_data (** kwargs )
115
+
116
+ def get_queryset (self ):
117
+ self .topic = get_object_or_404 (ChatTopic ,boardName__pk = self .kwargs .get ('pk' ), pk = self .kwargs .get ('topic_pk' ))
118
+ queryset = self .topic .posts .order_by ('createdAt' )
119
+ return queryset
76
120
77
121
@login_required
78
122
def reply_topic (request , pk , topic_pk ):
@@ -89,6 +133,8 @@ def reply_topic(request, pk, topic_pk):
89
133
form = PostForm ()
90
134
return render (request ,'reply_topic.html' , {'topic' :topic , 'form' :form })
91
135
136
+
137
+ #CBV
92
138
@method_decorator (login_required , name = 'dispatch' )
93
139
class PostUpdateView (UpdateView ):
94
140
model = Post
0 commit comments