Add template for loop on restaurant list page

See documentation for Django's built-in [for template tag][1].

[1]: https://docs.djangoproject.com/en/1.4/ref/templates/builtins/#for
Show restaurant addresses using if statements

See documentation for Django's built-in [if template tag][1].

[1]: https://docs.djangoproject.com/en/1.4/ref/templates/builtins/#if
Abstract template logic into address model method

Business logic doesn't belong in templates.  This method is easier to
read and more easily reusable (see [Don't Repeat Yourself][1]).

See documentation on built-in [linebreaksbr][2] template filter.  For
information on why the address method is called when used as a template
variable see [rendering a context][3] in the template documentation.

[1]: http://c2.com/cgi/wiki?DontRepeatYourself
[2]: https://docs.djangoproject.com/en/1.4/ref/templates/builtins/#std:templatefilter-linebreaksbr
[3]: https://docs.djangoproject.com/en/1.4/ref/templates/api/#rendering-a-context

Demonstrates:
* First filter (linebreaksbr)
* Principle of keeping tricky logic out of templates
Add page to view details for a single restaurant

RestaurantDetailView.get is called when an [HTTP GET][1] request is
processed by the RestaurantDetailView class view.

To understand the call to Restaurant.objects.get see the documentation
for [get() queryset method][2].  See [named capture groups][3] in the
URL dispatcher documentation to understand the url module change.

[1]: http://www.cs.tut.fi/~jkorpela/forms/methods.html
[2]: https://docs.djangoproject.com/en/1.4/ref/models/querysets/#get
[3]: https://docs.djangoproject.com/en/1.4/topics/http/urls/#named-groups
Use get_object_or_404 shortcut function

See documentation for [get_object_or_404][1] Django shortcut function.

[1]: https://docs.djangoproject.com/en/1.4/topics/http/shortcuts/#django.shortcuts.get_object_or_404
Use DetailView to generate restaurant detail page

See [DetailView][1] documentation.

[1]: https://docs.djangoproject.com/en/1.4/ref/class-based-views/#django.views.generic.detail.DetailView
Use ListView for generating restaurant list page

See [ListView][1] documentation.

[1]: https://docs.djangoproject.com/en/1.4/ref/class-based-views/#django.views.generic.list.ListView
Add hard coded links to restaurant pages
Use URL template tag for restaurant links

See documentation on Django's built-in [url template tag][1].

[1]: https://docs.djangoproject.com/en/1.4/ref/templates/builtins/#std:templatetag-url
Use url tag for base nav and add Restaurants link
Link to restaurant pages using model function

See documentation on [Model.get_absolute_url][1].

[1]: https://docs.djangoproject.com/en/1.4/ref/models/instances/#django.db.models.Model.get_absolute_url
Add Review model for reviewing a Restaurant

See documentation for [ForeignKey][1] model field.

[1]: https://docs.djangoproject.com/en/1.4/ref/models/fields/#django.db.models.ForeignKey
Show reviews on restaurant details page

See documentation on [for ... empty][1] template tag construct and
[filter()][2] queryset method.

[1]: https://docs.djangoproject.com/en/1.4/ref/templates/builtins/#for-empty
[2]: https://docs.djangoproject.com/en/1.4/ref/models/querysets/#filter
Use reverse relation manager when querying reviews

See [following relationships "backwards"][1] in Making Queries
documentation.

[1]: https://docs.djangoproject.com/en/1.4/topics/db/queries/#following-relationships-backward
Add view/page with form for writing review

See documentation on [ModelForm][1] and [Form.as_p][2].

[1]: https://docs.djangoproject.com/en/1.4/topics/forms/modelforms/#django.forms.ModelForm
[2]: https://docs.djangoproject.com/en/1.4/ref/forms/api/#django.forms.Form.as_p
Make form actually submit a proper POST

See documentation on [csrf_token][1] template tag.

[1]: https://docs.djangoproject.com/en/1.4/ref/templates/builtins/#std:templatetag-csrf_token
Handle POST requests to create_review view

See documentation for [HttpRequest.POST][1] for information on
`request.POST`.  See documentation for [Form.is_valid][2] and
[ModelForm.save][3] for information on `form.is_valid()` and
`form.save()`.

[1]: https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest.POST
[2]: https://docs.djangoproject.com/en/1.4/ref/forms/api/#django.forms.Form.is_valid
[3]: https://docs.djangoproject.com/en/1.4/topics/forms/modelforms/#the-save-method
Fix review form save (assign restaurant properly)
Use messages app to improve POST/redirect/GET flow

See documentation on [messages framework][1].

[1]: https://docs.djangoproject.com/en/1.4/ref/contrib/messages/#django.contrib.messages