Django for Beginners

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Notes on slide 1

    Hello! My name is Jason Davies; I'm a freelance Web developer from Cambridge and I've been using Django for about 2 years ever since it was open-sourced in July 2005. Hopefully this will give you a good introduction to the basics of Django. Simon Willison will cover even more stuff in the advanced tutorial.

    10 Favorites

    Django for Beginners - Presentation Transcript

    1. An Introduction
        • Jason Davies
        • PyCon UK 2007
    2. Django Reinhardt
    3. ljworld.com
    4.  
    5. www.djangoproject.com
    6.  
    7.  
    8.  
    9. Overview of this Tutorial
        • Brief introduction and philosophy
        • Creating Django models
        • The automatic admin interface
        • Views (and URLs)
        • Templates
        • Comparison with other frameworks
    10. Django's Mission Statement
        • “Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design.”
    11. Django Requirements
      • Python (2.3+)
      • PostgreSQL / MySQL / SQLite / ...
      • Apache + mod_python / FastCGI / ...
    12. “Projects” $ django-admin.py startproject myproject
    13. myproject/ __init__.py manage.py settings.py urls.py
    14. $ ./manage.py runserver Validating models... 0 errors found. Django version 0.96-pre, using settings 'myproject.settings' Development server is running at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
    15.  
    16. “Apps” $ django-admin.py startapp blog
    17. myproject/ blog/ __init__.py models.py views.py __init__.py manage.py settings.py urls.py
    18. Creating Models from django.db import models class Blog(models.Model): title = models.CharField(maxlength=200) class Post(models.Model): title = models.CharField(maxlength=200) body = models.TextField() blog = models.ForeignKey(Blog) pub_date = models.DateTimeField()
    19. Activating Models $ ./manage.py syncdb Creating table blog_blog Creating table blog_post Loading 'initial_data' fixtures... No fixtures found.
    20. Activating the Admin Interface from django.db import models class Blog(models.Model): title = models.CharField(maxlength=200) class Admin: list_display = ['title'] class Post(models.Model): title = models.CharField(maxlength=200) body = models.TextField() blog = models.ForeignKey(Blog) pub_date = models.DateTimeField() class Admin: list_display = ['title', 'pub_date']
    21.  
    22.  
    23. Model API $ ./manage.py shell >>> from myproject.blog import Blog >>> b = Blog( ... title=”Jason's Fantastic Blog!!!”) >>> b.save()
    24. >>> all_blogs = Blog.objects.all() >>> print all_blogs [<Blog: Blog object>] >>> print all_blogs.name Jason's Fantastic Blog!!! >>> b = Blog.objects.get(name__contains='Jason') >>> print b.title Jason's Fantastic Blog!!!
    25. URLs ROOT_URLCONF = 'myproject.urls'
    26. URLconfs from django.conf.urls.defaults import * from myproject.blog.views import * urlpatterns = patterns('', (r'^admin/', include('django.contrib.admin.urls')), (r'^blog/$', post_list), (r'^blog/(?P<id>d+)/$', post_list), )
    27. Views from django.http import HttpResponse def post_list(request): return HttpReponse(“This is a list of posts!”)
    28. from django.http import HttpResponse from myproject.blog.models import Post def post_list(request): r = “<ul>” posts = Post.objects.order_by(“-pub_date”) for post in posts: r += “<li>%s: %s</li>” % (post.title, post.body) r += “</ul>” return HttpResponse(r) More realistic...
    29. from django.shorcuts import render_to_response from myproject.blog.models import Post def post_list(request): posts = Post.objects.order_by(“-pub_date”) return render_to_response('blog/post_list.html', { 'post_list': posts, }) Better!
    30. from django.shorcuts import render_to_response from myproject.blog.models import Post def post_detail(request, id): post = get_object_or_404(Post, id=id) return render_to_response('blog/post_detail.html', { 'post': post, }) For completeness...
    31. Templates <html> <body> <h1>Jason's Fantastic Blog!!!</h1> <ul> {% for p in post_list %} <li> <a href=”{{ p.id }}/”>{{ p.title|escape }}</a> </li> {% endfor %} </ul> </body> </html>
    32. The magic dot
      • p[“name”]
      • p.name
      • p.name()
    33. Filters {{ var|escape|linebreaks|... }}
    34. base.html <html> <head> <title>{% block title %}{% endblock %} </head> <body> <div id=”content”> {% block content %}{% endblock %} </div> <div id=”footer”> {% block footer %} Copyright Jason Davies 2007. {% endblock %} </div> </body> </html>
    35. {% extends “base.html” %} {% block title %} Posts | {{ block.super }} {% endblock %} {% block content %} <h1>Blog Posts ({{ post_list|length }} total)</h1> <ul> {% for post in post_list %} <li> <a href=”{{ post.id }}/”> {{ post.title|escape }} </a> </li> {% endfor %} </ul> {% endblock %}
    36. Ruby on Rails http://www.rubyonrails.org/
    37. http://www.alrond.com/en/2007/jan/25/performance-test-of-6-leading-frameworks/
    38. Thank you for listening. Jason Davies [email_address] http://www.jasondavies.com/
    39. http://www.mercurytide.co.uk/whitepapers/django-cheat-sheet/
    40.  
    41.  

    + jasondaviesjasondavies, 2 years ago

    custom

    4393 views, 10 favs, 4 embeds more stats

    Slides for the "Django for Beginners" tutorial give more

    More Info

    CC Attribution License

    Go to text version
    • Total Views 4393
      • 4203 on SlideShare
      • 190 from embeds
    • Comments 0
    • Favorites 10
    • Downloads 59
    Most viewed embeds
    • 91 views on http://www.coderholic.com
    • 77 views on http://www.jasondavies.com
    • 16 views on http://www.dowling.me.uk
    • 6 views on http://markeev.labwr.ru

    more

    All embeds
    • 91 views on http://www.coderholic.com
    • 77 views on http://www.jasondavies.com
    • 16 views on http://www.dowling.me.uk
    • 6 views on http://markeev.labwr.ru

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as innappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel

    Categories