1
00:00:00,320 --> 00:00:05,080
Hey, in this video, we're going to write the views of our Django app.

2
00:00:05,090 --> 00:00:13,190
So we already have the modules in Models.py on the restaurant menu and on the restaurant menu.

3
00:00:13,190 --> 00:00:22,010
This directory, we also have a Views.py file which was generated by Django automatically.

4
00:00:22,010 --> 00:00:26,270
However, it's just an almost empty file.

5
00:00:26,270 --> 00:00:32,750
We do have this import here, so you can leave that import and you can delete this comment.

6
00:00:32,750 --> 00:00:37,070
So this comment is indicating that we need to create our views here.

7
00:00:37,280 --> 00:00:45,500
Now just to refresh your memory, we did already create views in our previous Django app, which was

8
00:00:45,590 --> 00:00:51,080
this one here, so I have just switched to another project App 17.

9
00:00:51,470 --> 00:00:56,620
You don't have to open this project, just going to refer to what we did.

10
00:00:56,630 --> 00:00:57,950
So here I am.

11
00:00:57,950 --> 00:01:02,820
I've opened Views.py of the Django form or project.

12
00:01:03,210 --> 00:01:14,190
In this project we used a function based view, so index was our view here which returned the index.html

13
00:01:14,220 --> 00:01:15,240
template.

14
00:01:15,510 --> 00:01:27,000
So the purpose of a view is to get data from the models, from the database model and display those

15
00:01:27,000 --> 00:01:31,920
data back and forth to the HTML front end.

16
00:01:32,370 --> 00:01:32,880
Right.

17
00:01:32,880 --> 00:01:35,220
That's the purpose of a view.

18
00:01:35,220 --> 00:01:43,410
Now we have function based views such as this one here, but we also have class based views and that

19
00:01:43,410 --> 00:01:51,300
is something we're going to learn to do in our App 18 in our current app now, so you can create class

20
00:01:51,300 --> 00:01:57,810
based views using the class keyword followed by a name you want to give to that class.

21
00:01:58,590 --> 00:01:59,130
Now.

22
00:01:59,130 --> 00:01:59,460
Why?

23
00:01:59,490 --> 00:02:03,150
Class based views are not function based views.

24
00:02:03,850 --> 00:02:08,560
Well, each of the two has its own advantages and disadvantages.

25
00:02:08,590 --> 00:02:14,540
The class based views tend to have less code, so they are cleaner.

26
00:02:14,560 --> 00:02:16,030
As you'll see.

27
00:02:16,890 --> 00:02:23,070
So some people tend to prefer class views and some other people prefer function views.

28
00:02:23,070 --> 00:02:30,120
For you as a learner, it's important to learn both and then you can decide which one to use when you

29
00:02:30,120 --> 00:02:31,410
develop your own project.

30
00:02:31,410 --> 00:02:35,010
So I'll call this menu list view.

31
00:02:36,360 --> 00:02:42,690
I'll explain what this does, what the purpose of this view as we write the code.

32
00:02:42,690 --> 00:02:51,480
But this view has to inherit from a list view class, which is something we need to import.

33
00:02:51,870 --> 00:02:54,270
So we need to import generic.

34
00:02:55,480 --> 00:03:01,970
From Django dot views import generic and then this underline will go away.

35
00:03:01,990 --> 00:03:04,810
So there we go.

36
00:03:04,810 --> 00:03:11,080
So what I'm trying to do here is I'm trying to create a view for this page, right?

37
00:03:11,170 --> 00:03:13,930
And basically we have two types of pages.

38
00:03:13,960 --> 00:03:21,040
This page here, which is represented by the menu list class, this view.

39
00:03:22,000 --> 00:03:27,190
And then we have another type of page, which are these individual pages.

40
00:03:27,190 --> 00:03:30,400
So for example, pizza, Greek salad.

41
00:03:31,070 --> 00:03:38,120
So this type of page will be represented by another class which will be defined in here.

42
00:03:38,120 --> 00:03:49,850
Class menu item detail, something like that which will inherit from generic that detail view.

43
00:03:49,850 --> 00:03:53,930
So that's a Django class that is also a Django class.

44
00:03:55,470 --> 00:03:56,890
Let's pass for now.

45
00:03:56,910 --> 00:04:00,240
We will develop this class later.

46
00:04:00,960 --> 00:04:07,830
So each of these classes are designed for particular, very particular type of pages.

47
00:04:07,830 --> 00:04:14,070
So the menu list class is good to display pages which have lots of data.

48
00:04:14,070 --> 00:04:16,350
So a list type of page.

49
00:04:16,350 --> 00:04:24,540
It could be this menu here or it could be the front page of a blog where you have different blog links,

50
00:04:25,200 --> 00:04:25,620
right?

51
00:04:25,620 --> 00:04:33,570
And then the user clicks on one of those blogs, and then that page that opens the blog itself is represented

52
00:04:33,570 --> 00:04:38,130
by the other class, the class which inherits from Detail View.

53
00:04:38,250 --> 00:04:41,160
So what do we write here now?

54
00:04:41,160 --> 00:04:51,870
Well, a list type of view such as this one here, which displays list of data has to have a query set

55
00:04:51,870 --> 00:04:56,590
variable a query sorry, a query set like that.

56
00:04:56,770 --> 00:05:03,520
Query set as a variable which will store the list of data.

57
00:05:05,360 --> 00:05:07,790
You get those using item.

58
00:05:07,790 --> 00:05:09,020
What is item?

59
00:05:09,800 --> 00:05:11,270
Well, item is.

60
00:05:13,320 --> 00:05:15,950
Import item.

61
00:05:15,960 --> 00:05:20,790
It is this class here, right in Models.py.

62
00:05:21,120 --> 00:05:27,030
Yesterday we developed this class which represents the database table.

63
00:05:27,750 --> 00:05:29,940
So we import that class.

64
00:05:29,940 --> 00:05:34,950
So basically with this, we are querying the data from the database table.

65
00:05:35,100 --> 00:05:42,900
Now, we don't have any data, any rows in that table, but when we add data later on in the admin interface

66
00:05:42,930 --> 00:05:46,050
as a cook, we will add some meals and so on.

67
00:05:46,080 --> 00:05:49,140
Then this query set will get those data.

68
00:05:49,980 --> 00:05:53,910
You can order them using the order by method.

69
00:05:54,210 --> 00:05:58,380
You can order them by one of these fields.

70
00:05:58,710 --> 00:06:01,220
For example, let's take date created.

71
00:06:01,230 --> 00:06:07,070
I'll copy that and put it here as a string inside quotes date created.

72
00:06:07,080 --> 00:06:13,090
And if you want to reverse the order, you just enter a minus before this.

73
00:06:13,480 --> 00:06:15,220
So minus date created.

74
00:06:16,310 --> 00:06:26,230
And then if I go again to App 17, which was the Django form, you remember, Remember that this one

75
00:06:26,230 --> 00:06:34,870
here where we had the function based views in here, you'll see that we returned the render function

76
00:06:34,870 --> 00:06:40,240
and then the render function had this index.html as a template.

77
00:06:40,510 --> 00:06:43,780
Now, with class based views, this is a bit different.

78
00:06:43,780 --> 00:06:45,790
Let's switch again to APP 18.

79
00:06:45,820 --> 00:06:53,720
This current app with class based views, you just write a template name variable exactly like that.

80
00:06:53,740 --> 00:06:58,930
So variable names in this class need to have specific names.

81
00:06:58,930 --> 00:07:06,670
So queryset with lowercase template underscore name because Django will look for this template.

82
00:07:06,670 --> 00:07:14,110
So instead of returning something with the return keyword, you just write a specific variable name

83
00:07:14,110 --> 00:07:16,990
and that will be equal to index dot HTML.

84
00:07:17,000 --> 00:07:22,280
And that's all we have to do with the menu list view.

85
00:07:22,550 --> 00:07:30,590
Now before we develop the index.html code, let's also complete the menu item detail class view.

86
00:07:30,740 --> 00:07:36,620
So for this you're going to have to define to declare the model variable.

87
00:07:36,620 --> 00:07:44,120
Again, this is a predefined variable name which has to equal to the model name.

88
00:07:44,120 --> 00:07:50,450
So this item model, which is imported from Models.py, right, this class.

89
00:07:50,450 --> 00:08:01,520
And then here you just declare the template underscore name to be equal to perhaps menu item detail

90
00:08:01,520 --> 00:08:02,800
dot HTML.

91
00:08:02,810 --> 00:08:08,240
So this is also a file which we're going to create in our directory here.

92
00:08:08,240 --> 00:08:15,440
So this file and this file here are two files we still have to create in our project directory.

93
00:08:16,090 --> 00:08:18,850
So let's go ahead and create those two files.

94
00:08:19,480 --> 00:08:27,340
You need to create them inside a particular folder named templates, and that folder has to be inside

95
00:08:27,340 --> 00:08:29,620
the project root root directory.

96
00:08:29,620 --> 00:08:36,220
So I'll collapse these folders to make it more clear where we are.

97
00:08:36,250 --> 00:08:43,809
So then right click over the project directory, go to new, go to directory and type in templates.

98
00:08:44,380 --> 00:08:50,050
So the name has to be exactly like this templates lowercase with an s at the end.

99
00:08:50,080 --> 00:08:56,100
Press enter that will create this empty directory here under app 18 restaurant menu.

100
00:08:56,110 --> 00:08:59,830
Then inside this directory I want to create two HTML files.

101
00:08:59,830 --> 00:09:06,600
So right click go to new html file, type in index dot html.

102
00:09:06,610 --> 00:09:13,600
It's not necessary if you are creating an html file through PyCharm so you can just press enter without

103
00:09:13,600 --> 00:09:19,490
providing the extension because PyCharm will add the extension automatically.

104
00:09:19,700 --> 00:09:29,240
So PyCharm just created an almost empty HTML file here so you can add some contents inside the body

105
00:09:29,240 --> 00:09:39,620
tags, for example, an H1 tag and say menu here or restaurant menu.

106
00:09:39,890 --> 00:09:45,710
So restaurant menu will be displayed on the front end in big headings.

107
00:09:46,130 --> 00:09:52,790
Let's also create the other file, which is let's see the name of this menu item.

108
00:09:52,790 --> 00:09:54,170
Detail Menu.

109
00:09:54,170 --> 00:09:55,460
Underscore item detail.

110
00:09:55,460 --> 00:09:56,840
I'm going to copy this.

111
00:09:58,180 --> 00:10:05,080
And right click over templates, go to HTML file, paste that name, press enter and let's do the same

112
00:10:05,080 --> 00:10:05,770
here.

113
00:10:06,460 --> 00:10:10,930
H one Let's say here menu item.

114
00:10:10,930 --> 00:10:11,440
Right?

115
00:10:11,440 --> 00:10:13,120
So we have two pages.

116
00:10:13,120 --> 00:10:16,270
One is for.

117
00:10:17,050 --> 00:10:18,430
This page.

118
00:10:18,460 --> 00:10:20,730
So this page is the end product.

119
00:10:20,740 --> 00:10:22,390
We haven't built this yet.

120
00:10:22,420 --> 00:10:25,510
I built this behind the camera, as I mentioned before.

121
00:10:25,720 --> 00:10:31,690
And then we have this other page which will represent these pages.

122
00:10:31,690 --> 00:10:32,350
Right.

123
00:10:33,280 --> 00:10:36,220
But now we don't have any data.

124
00:10:36,250 --> 00:10:39,040
We still we just have some static text.

125
00:10:39,160 --> 00:10:45,630
So for now, let's simply connect the views to these two files.

126
00:10:45,640 --> 00:10:47,140
And we already did that.

127
00:10:47,140 --> 00:10:56,230
So when you say template name is equal to index.html, that means you have connected this view to that

128
00:10:56,230 --> 00:11:07,840
front end page and then you have connected this model, the item model from models.py to this view.

129
00:11:08,560 --> 00:11:13,990
So basically we have connected the model to the view and the view to the HTML.

130
00:11:14,020 --> 00:11:25,100
However, what we haven't connected yet is the URL part, which means that when the user visits a URL,

131
00:11:25,100 --> 00:11:34,070
that URL, for example, the home page URL, that URL has to be connected to this view.

132
00:11:34,070 --> 00:11:38,890
So this view has to be triggered when the user visits that URL.

133
00:11:38,900 --> 00:11:49,430
So as a programmer, you do that linking by going to restaurant menu, your app directory, right click

134
00:11:49,430 --> 00:11:51,710
and create a new python file.

135
00:11:51,740 --> 00:11:54,050
Call it urls.py.

136
00:11:54,380 --> 00:11:55,640
So there we go.

137
00:11:55,670 --> 00:12:03,620
Urls.py has just been created and here you want to import from Django dot URLs import path.

138
00:12:05,240 --> 00:12:15,050
Also from the current directory, the local directory, which is restaurant menu with a dot import views.

139
00:12:16,520 --> 00:12:22,790
So we imported the views.py file because we need something from that file.

140
00:12:23,090 --> 00:12:25,370
Then you say URL patterns.

141
00:12:27,200 --> 00:12:30,620
So make sure the variable name is exactly like this.

142
00:12:30,950 --> 00:12:32,690
This will be a list.

143
00:12:33,110 --> 00:12:36,020
We're going to have multiple items here.

144
00:12:36,020 --> 00:12:39,100
The first item is a path function.

145
00:12:39,110 --> 00:12:42,830
So call that function with an empty string.

146
00:12:43,010 --> 00:12:45,950
This is an empty string because this will be the homepage.

147
00:12:45,950 --> 00:12:49,250
So usually the homepage looks like this, right?

148
00:12:49,700 --> 00:12:55,460
So let's say my side.com and there's nothing after that.

149
00:12:55,940 --> 00:13:00,650
But other pages will have something like menu item etcetera.

150
00:13:01,610 --> 00:13:04,100
So this is the home page.

151
00:13:04,100 --> 00:13:06,000
So the string is empty.

152
00:13:06,420 --> 00:13:10,350
Then we have views, menu lists.

153
00:13:10,530 --> 00:13:14,940
So menu lists is the class in Views.py.

154
00:13:15,360 --> 00:13:16,640
That's the class.

155
00:13:16,650 --> 00:13:20,520
So that means when the user visits the home page.

156
00:13:21,440 --> 00:13:31,160
This one here views that menu lists will be triggered and views that menu list will send the index.html

157
00:13:31,310 --> 00:13:34,670
page to the user browser.

158
00:13:34,700 --> 00:13:37,240
That's how this works.

159
00:13:37,250 --> 00:13:41,060
However, here you also need to add as view.

160
00:13:41,480 --> 00:13:51,290
This is a method which basically renders this class as an actual view with function based views.

161
00:13:51,290 --> 00:13:53,540
We didn't need to have this.

162
00:13:53,570 --> 00:14:03,860
Remember, if I show you App 17 and we go to Urls.py, you see here we simply mentioned views that index

163
00:14:03,860 --> 00:14:07,730
index was the function, the function based view.

164
00:14:08,390 --> 00:14:10,160
This one here, right?

165
00:14:10,190 --> 00:14:11,400
Let's go back to app.

166
00:14:11,420 --> 00:14:13,490
App 18, the current app.

167
00:14:13,790 --> 00:14:19,850
So as view with parentheses, we are calling that method and you need to give a name to this, let's

168
00:14:19,850 --> 00:14:20,380
say home.

169
00:14:20,390 --> 00:14:24,630
This will be used later in other parts of the Django app.

170
00:14:25,440 --> 00:14:27,230
So that's the URLs.

171
00:14:27,240 --> 00:14:32,340
So that's the URL codes inside the URL.

172
00:14:32,370 --> 00:14:35,260
Actually, this has to be urls.py.

173
00:14:35,280 --> 00:14:38,310
So let's go here, right click.

174
00:14:38,310 --> 00:14:43,100
Go to refactor, rename and rename it to urls.

175
00:14:43,110 --> 00:14:44,850
Dot py refactor.

176
00:14:45,810 --> 00:14:49,410
So Django will look for that Urls.py file.

177
00:14:49,560 --> 00:14:55,560
And then we also need to go to my site where our project is.

178
00:14:55,590 --> 00:14:57,810
Go to urls.py.

179
00:14:58,350 --> 00:15:07,650
And we also need to register our app here with the URLs of the projects so the Django project can have

180
00:15:07,650 --> 00:15:09,050
multiple apps.

181
00:15:09,060 --> 00:15:15,300
One of the apps is Restaurant menu, so we have only one app for now restaurant menu.

182
00:15:15,300 --> 00:15:23,910
So we need to register the URLs of that app using include, which is something we need to import.

183
00:15:25,020 --> 00:15:30,030
So from Django dot urls import path comma include.

184
00:15:30,060 --> 00:15:40,050
This is a function which we need to call and as parameter as an argument, we need to pass the name

185
00:15:40,080 --> 00:15:42,840
of the app which is restaurant menu.

186
00:15:45,570 --> 00:15:47,010
Dots URLs.

187
00:15:48,960 --> 00:15:49,590
URLs.

188
00:15:49,740 --> 00:15:51,460
Is the file name right?

189
00:15:51,480 --> 00:15:52,510
This one here.

190
00:15:52,530 --> 00:16:01,920
So basically we are referring to this directory and to that file with this and this empty string means

191
00:16:01,920 --> 00:16:08,370
that that's like the top sub directory, the top URL sub directory.

192
00:16:08,790 --> 00:16:17,130
So if you want all the links of your app to be accessed to whatever, for example, you put that here

193
00:16:17,130 --> 00:16:24,030
and then your app URLs would be accessed to mysite.com, whatever.

194
00:16:24,030 --> 00:16:28,080
And then other things here depending on what URLs you have.

195
00:16:28,740 --> 00:16:30,900
And so that's the idea.

196
00:16:31,950 --> 00:16:35,160
However, we want to keep this like that.

197
00:16:35,460 --> 00:16:40,530
So save this and let's try out the code.

198
00:16:40,530 --> 00:16:42,390
So I'll go to the terminal.

199
00:16:45,170 --> 00:16:48,720
Make sure the virtual environment is activated.

200
00:16:48,740 --> 00:16:50,180
It's not activated here.

201
00:16:50,180 --> 00:16:51,720
So I'll close this terminal.

202
00:16:51,740 --> 00:16:52,760
Open it again.

203
00:16:52,760 --> 00:16:54,360
And I see Venv now.

204
00:16:54,380 --> 00:16:56,250
So now I'm ready to run the app.

205
00:16:56,300 --> 00:16:59,740
Python Manage.py Runserver.

206
00:16:59,750 --> 00:17:05,060
And if your existing port is occupied, you can just say 8001.

207
00:17:05,060 --> 00:17:08,630
You can specify another port, for example, 8002 whatever you like.

208
00:17:09,510 --> 00:17:10,380
So there we go.

209
00:17:10,380 --> 00:17:13,349
We got an error in this line.

210
00:17:13,349 --> 00:17:15,660
So a restaurant menu Views.py.

211
00:17:15,690 --> 00:17:20,310
I can click over that and that will take me to the exact line where the error is.

212
00:17:20,339 --> 00:17:21,960
Item dot Object.

213
00:17:22,859 --> 00:17:29,010
The actual property name is objects, so item dot objects and.

214
00:17:30,240 --> 00:17:33,930
So now Django will refresh automatically.

215
00:17:33,930 --> 00:17:36,540
You don't need to rerun the project.

216
00:17:36,630 --> 00:17:42,720
So now it's running on this URL 8002, which is the port I defined manually here.

217
00:17:43,530 --> 00:17:45,360
And let's click that.

218
00:17:46,750 --> 00:17:49,440
And we don't see we don't see the content.

219
00:17:49,450 --> 00:17:50,530
We see an error.

220
00:17:50,530 --> 00:17:55,960
And I'm glad this error occurred because this will help you understand Django better.

221
00:17:56,470 --> 00:18:03,280
So this is saying that template does not exist at index.html.

222
00:18:03,430 --> 00:18:14,560
So we try to visit this URL that's URL triggered the menu list view and the menu list view tried to

223
00:18:14,560 --> 00:18:19,660
render index.html but it could not find it.

224
00:18:20,050 --> 00:18:23,200
So the template does not exist.

225
00:18:23,300 --> 00:18:23,830
Right?

226
00:18:23,860 --> 00:18:24,880
Why?

227
00:18:25,480 --> 00:18:27,370
That is because.

228
00:18:28,860 --> 00:18:36,480
We have placed templates this directory inside the root directory of our project.

229
00:18:36,480 --> 00:18:39,540
So this is directly under this.

230
00:18:39,750 --> 00:18:50,160
But by default Django is programmed to look for the templates directory inside the app directory itself.

231
00:18:50,160 --> 00:18:51,570
So inside here.

232
00:18:51,990 --> 00:18:53,910
So we have two options here.

233
00:18:53,940 --> 00:19:02,760
Either you drag this templates directory and you drop it inside the restaurant menu, or you go to the

234
00:19:02,760 --> 00:19:07,920
settings of your Django project which is under my sites, Settings.py.

235
00:19:08,130 --> 00:19:11,520
And you scroll down to templates.

236
00:19:11,520 --> 00:19:18,600
You have this dir here and here you specify templates as a name.

237
00:19:18,600 --> 00:19:26,730
So this is a relative path to the directory which contains the templates relative to the project root

238
00:19:26,730 --> 00:19:27,270
directory.

239
00:19:27,270 --> 00:19:30,820
Because currently templates is located in here.

240
00:19:30,820 --> 00:19:31,450
Right?

241
00:19:31,450 --> 00:19:38,080
So if you write that here, I do suggest you to try that and you go to reload the page.

242
00:19:39,370 --> 00:19:46,540
This time we're going to see the contents restaurant menu, which is the content we have in index.html

243
00:19:46,570 --> 00:19:46,990
here.

244
00:19:46,990 --> 00:19:58,180
So this heading otherwise which is how things are done usually is that you go to settings here, you

245
00:19:58,180 --> 00:19:59,560
can remove that.

246
00:19:59,590 --> 00:20:07,690
You don't need to explicitly mention this path here because if templates is dragged and dropped inside

247
00:20:07,690 --> 00:20:12,220
your app directory, which is a restaurant menu, this is what I'm doing here.

248
00:20:12,250 --> 00:20:13,390
Drag it there.

249
00:20:13,390 --> 00:20:15,130
So this is telling you.

250
00:20:15,130 --> 00:20:17,980
Oh, are you sure you want to refactor this?

251
00:20:17,980 --> 00:20:23,560
So are you sure you want to place that inside the restaurant menu directory, you say?

252
00:20:23,560 --> 00:20:24,790
Yes, refactor.

253
00:20:24,790 --> 00:20:30,220
And now if you expand this templates will be inside the app directory.

254
00:20:30,220 --> 00:20:37,870
So if you create more apps in the future for this project, you will want to keep each templates directory

255
00:20:37,870 --> 00:20:40,240
into their corresponding apps.

256
00:20:40,240 --> 00:20:46,360
But sometimes you may also want to have one template directory in the main project.

257
00:20:46,360 --> 00:20:47,590
That's also the case.

258
00:20:47,590 --> 00:20:57,030
And if that's the case, you want to specify that directory in the key here of this dictionary in Settings.py.

259
00:20:58,000 --> 00:20:58,930
Right.

260
00:20:58,930 --> 00:21:02,830
Let's close some of these files.

261
00:21:06,500 --> 00:21:08,210
So there we go.

262
00:21:08,450 --> 00:21:09,800
This is working.

263
00:21:09,800 --> 00:21:11,780
And this is the home page.

264
00:21:11,780 --> 00:21:16,190
As you can see, there's no sub directory after the URL.

265
00:21:18,030 --> 00:21:26,340
So to wrap it up, what we did in this video was we created two class based views.

266
00:21:26,610 --> 00:21:30,930
Each of them renders a particular template.

267
00:21:30,960 --> 00:21:32,730
We implemented this.

268
00:21:35,080 --> 00:21:36,240
View for now.

269
00:21:36,250 --> 00:21:42,370
Later on, we're going to implement this so that this page is also shown when we visit a particular

270
00:21:42,850 --> 00:21:43,360
item.

271
00:21:43,360 --> 00:21:47,010
But currently we don't have items on the web page, right?

272
00:21:47,020 --> 00:21:53,350
We don't have meals because we have unpopulated the database with any data yet.

273
00:21:53,350 --> 00:21:57,790
So later on we're going to display the meals here, we're going to make them clickable.

274
00:21:57,790 --> 00:22:04,570
And then when the user clicks one of those meals, they will be shown this template.

275
00:22:05,680 --> 00:22:11,830
But for now, we simply implemented this home page, this URL.

276
00:22:11,830 --> 00:22:18,670
So that's URLs calls this view, that view calls that index.html file and so on.

277
00:22:18,670 --> 00:22:21,790
I hope you're getting a grasp of how Django works.

278
00:22:21,790 --> 00:22:23,080
So that's the idea here.

279
00:22:23,080 --> 00:22:28,390
We do a lot of practice, lots of examples and so on, so you can understand the structure of a Django

280
00:22:28,390 --> 00:22:28,840
app.

281
00:22:29,060 --> 00:22:32,650
Then you can build your own Django apps independently.

282
00:22:32,650 --> 00:22:34,330
So thanks a lot for following this.

283
00:22:34,360 --> 00:22:38,800
We have some more interesting implementation to do, so I'll see you in the next video.

284
00:22:38,830 --> 00:22:39,130
See you.

