1 / 46

Accelerating Information Technology Innovation

Accelerating Information Technology Innovation. http://aiti.mit.edu. Ghana Summer 2013 Django Lecture 5 - Models. How Django works. localhost:8000/blog/detail/4. Templates. urls.py. Models. T itle. Views. Blog Comment. Date. Body.

nellis
Download Presentation

Accelerating Information Technology Innovation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Accelerating Information Technology Innovation http://aiti.mit.edu Ghana Summer 2013 Django Lecture 5 - Models

  2. How Django works localhost:8000/blog/detail/4 Templates urls.py Models Title Views Blog Comment Date Body Give me blog post # 4 and all its comments and put it in the detail template Comment author Comment Comment author Comment

  3. Today: Views and urls.py localhost:8000/blog/detail/4 Templates urls.py Models Title Views Blog Comment Date Body Give me blog post # 4 and all its comments and put it in the detail template Comment author Comment Comment author Comment

  4. Today’s lab: search your blog localhost:8000/search/<term> Template: search.html urls.py Models Views Term: term Matching blog posts: Some blog post Some other blog post Blog Give me blog posts that match the search term and put them in the search.html template

  5. Views • Get data from Model • Choose a template to display • Return template and data

  6. Views: list.html • Get list of all blogs • Put it in the list.html template defblog_list(request): blog_list = Blog.objects.all() t = loader.get_template('blog/list.html') c = Context({'blog_list':blog_list}) return HttpResponse(t.render(c))

  7. Data from Model defblog_list(request): blog_list = Blog.objects.all() t = loader.get_template('blog/list.html') c = Context({'blog_list':blog_list}) return HttpResponse(t.render(c))

  8. Choose template defblog_list(request): blog_list = Blog.objects.all() t = loader.get_template('blog/list.html') c = Context({'blog_list':blog_list}) return HttpResponse(t.render(c))

  9. Name variables to be used in template defblog_list(request): blog_list = Blog.objects.all() t = loader.get_template('blog/list.html') c = Context({'blog_list':blog_list}) return HttpResponse(t.render(c))

  10. Return template with data defblog_list(request): blog_list = Blog.objects.all() t = loader.get_template('blog/list.html') c = Context({'blog_list':blog_list}) return HttpResponse(t.render(c))

  11. Getting data from Models • Always start with Blog.objects • Get all blogs Blog.objects.all() • Get a specific blog Blog.objects.get(id=4)

  12. Filters • Get only specific data • contains: find if a match is contained inside a field • Blog.objects.filter(body__contains='cool') • icontains: case insensitive contains • Blog.objects.filter(author__icontains='smith’)

  13. Filter syntax • Blog.objects.filter(body__contains='cool’) • which field you’re searching (body, title, author) • 2 underscores • filter: contains/icontains • = • text of search term

  14. View to get blogs containing the word AITI defget_blogs_about_AITI(request): blog_list = Blog.objects.filter(body__contains=“AITI”) t = loader.get_template('blog/list.html') c = Context({'blog_list':blog_list}) return HttpResponse(t.render(c))

  15. Ordering • Blog.objects.order_by(‘pub_date’)

  16. Getting data from model • detail.html needs a specific blog, and all comments from that blog • view for detail.html: defblog_detail(request, id): blog = Blog.objects.get(id=id) comments = Comment.objects.filter(post=blog)

  17. Name variables to be used in templates defblog_detail(request, id): blog = Blog.objects.get(id=id) comments = Comment.objects.filter(post=blog) c = Context({'blog':blog, 'comments':comments})

  18. Lab: view for blog_search • Select all blogs containing the search term • Choose template to load it into • Name variables to be used in template defblog_search(request, search_term):

  19. Regular Expression • Patterns that text strings can match BALL BACK BA _ _ TALL BABOON

  20. Regular Expression • Patterns that text strings can match 123 “Any number of digits” 314589203 123abc BABOON

  21. How to define these patterns? • Special characters

  22. Start and end of line • ^ means start of line • $ means end of line hello ^hello$ hello world

  23. Characters • . matches anything! 8 1 . a z

  24. Characters • . matches anything! 812 193 ^ . . . $ a abcd

  25. Characters • \d matches digits 8 1 \d a z

  26. Characters • \w matches letters and numbers 8 A \w a %

  27. BALL BACK BA _ _ TALL BABOON

  28. Repetition • * means zero or more times a a* aaaaaa

  29. Repetition • + means one or more times a a+ aaaaaa

  30. Repetition • ? means exactly 0 or 1 times a a? aaaaaa

  31. Practice: which ones match the regex? a \d+ 1 123

  32. Practice: which ones match the regex? a \d+ 1 123

  33. Practice: which ones match the regex? a 1 .* 123abc

  34. Practice: which ones match the regex? a 1 .* 123abc

  35. | means “or” hello (hello|bye) bye potato

  36. ( ) means grouping hello (hello)+ hellohello hellothere

  37. urls.py • urls.py uses regular expressions to describe urls • All start with localhost:8000/blog/ url(r'^$', 'blog.views.home’)

  38. urls.py • urls.py uses regular expressions to describe urls • All urls start with localhost:8000/blog/ • Format: url(r'regex', ’view’) • Example: url(r'^$', 'blog.views.home’)

  39. urls.py url(r'^$', 'blog.views.home’) url(r'^list/$', 'blog.views.blog_list'), url(r'^(detail|info)/(\d+)$', 'blog.views.blog_detail'), Things in parentheses are passed into the views function!

  40. url(r'^$', 'blog.views.home’) ^$ 1 hello localhost:8000/blog/

  41. url(r'^list/$', 'blog.views.home’) list/ ^list/$ 1 hello localhost:8000/blog/list

  42. url(r'^(detail|info)/(\d+)$', 'blog.views.home’) detail/123 info/1 ^(detail|info)/(\d+)$ detail/ list localhost:8000/blog/detail/123

  43. url(r'^search/(happy)$', 'blog.views.blog_search') search/happy ^search/(happy)$ search/aiti hello localhost:8000/search/happy

  44. url(r'^search/(happy)$', 'blog.views.blog_search') Lab: change this regex to match any search term, not just “happy”

  45. Today’s lab: search your blog localhost:8000/search/<term> Template: search.html urls.py Models Views Term: term Matching blog posts: Some blog post Some other blog post Blog Give me blog posts that match the search term and put them in the search.html template

  46. Lab • Create a way to search for text in your blog posts • view • urls • template • Read all instructions before starting the lab! • If you haven’t finished the last lab, still move on to this lab.

More Related