Homework 5

From 118wiki

Jump to: navigation, search

Homework 5 (final project)

Grading Commentary 18 December

I've looked at all homeworks, and will begin scoring soon. Students found a good variety of Django and networking ideas, beyond tutorials on this website and beyond discussion in class. Here are some of the techniques that different students explored:

  • Fancy Templates
    • Conditional processing of templates ({%) if, ifequals, else, etc.
    • Template extension ({% extends ...%})
    • Filters on template fields (piping through filters)
    • Forms with URL selection, GET and POST actions
  • CSS, Javascript
    • Communication with Javascript vars
  • Database Operations
    • save() to update, delete() to remove
    • filter() to query
    • get() with id and pk parameters
    • program to load up database (using Django's shell)
  • Forms Processing
    • Using automatic Manipulators
    • Using validators
  • Add/Update Operations
    • Generic Views (which automates lots of things)
    • Overriding save() in model.py to get side effects (email, url fetch, etc)
  • Complex Model Definitions
    • Meta fields, Admin preferences in display/sorting
    • one-to-one specifications, many Django field types (URLs, email, etc)
  • Missing URLs
    • Customized 404-"not found" templates
  • Session Processing
    • Added state and techniques to track user progress
  • Network Functions
    • Email: send_mail, Python invocation of sendmail,
    • HTTP fetch: using urllib, xml or html parse, REST-invocation
  • Customized Administration
    • Specialized admin views, templates

Good work! This is an impressive list.


The final project is to use Django to build a website. Part of this is building off the tutorial, part of it is exploring more features of Django, the views, the database API, and so on.

  Proposed Due Date:  10 December 11:59pm

This homework is 40 points, contributing more than any other homework or exam. The breakdown of how the homework will be scored is:

10 points 
Your website is contained in a single directory (as initially created by the django-admin.py startproject command), submitted via the submit command, to the homework5 directory of c118 (previous homeworks describe how to use submit), and it is a functioning website. Quite probably, that means your directory will contain a database, any extra files needed for demonstrating the website, and so on. By functioning I mean that it can be tested and evaluated on the linux cluster of the CS department. For those of you developing your Django application on a Windows machine, you'll need to make sure, before submitting, that everything works on the departmental cluster.
15 points 
Advanced features, beyond the tutorial. Part of this homework challenges you to explore, going beyond what was handed to you in class. Don't attempt something too difficult if find out quickly that it is too hard to get working. Ask questions if you are unsure of what would count as an advanced feature or what would not be relevant to an application-of-networking course.
10 points 
Documentation of your work, describing what you accomplished (if you adapted work of others, say what you did to build on that work). Things I look for in the documentation are "how to" run and use the website, screenshots (the linux machines have a program called KSnapshot that can capture a screen), a readme file to say what extra files, directories, and things you did to make the site; and if you introduce some new protocols or programs that load up the database, network outside of using a browser, these should be described. The documentation could be organized into a webpage or it could be a PDF file (or equivalent). Please don't hide the documentation or just consider comments in your code as documentation -- this should be a separate document, clearly indicated in what you turn in.
5 points 
Creativity. This measures how far you departed from the usual "inventory" website and how imaginatively you used the features in Django.
Personal tools