Differences between revisions 4 and 5
Revision 4 as of 2014-04-21 09:36:28
Size: 2213
Editor: techtonik
Comment: add Django
Revision 5 as of 2014-04-21 13:21:34
Size: 2307
Editor: techtonik
Comment: add link to django subapps url inclusion
Deletions are marked like this. Additions are marked like this.
Line 41: Line 41:
Get overview of URLs handled: find settings.py, look for ROOT_URLCONF for name of Python modules with the location of URL map (usually named 'urls'), find referenced module ('urls.py'), read urls.py to understand how `urlpatterns` is constructed. Get overview of URLs handled: find settings.py, look for ROOT_URLCONF for name of Python modules with the location of URL map (usually named 'urls'), find referenced module ('urls.py'), read urls.py to understand how `urlpatterns` is constructed (it may contain [[https://docs.djangoproject.com/en/dev/intro/reusable-apps/|included apps]]).

Routing is mapping URLs to code that handles them.

Why routing is important? By directly connecting the content that you see on a web page (especially if it is an error), good routing drastically reduces time (and money) that required to improve this content (or fix the error). That's why Django has this link on its front page.

Ever heard of spaghetti code? Web applications is a good example of that. When we start reading a book - we have only single entrypoint - start of the book. If you read source code of web applications - there are usually no defined entrypoints, so the first thing you do is find some webpage and the run search to find out where is the code for it. Clearly defined routing not only saves you time on searching, but URLs gathered in one place give a good overview of application capabilities.

Good routing map is a like a map of the city you're going to explore.

Routing in Python Web Frameworks

Usability of routing component can be estimated with the help of the following questions:

  1. How easy is to get overview of all URLs that web application processes?
  2. How easy is to make reverse mapping (code to URL)?
  3. How easy is to serve static content URLs (css, js, images) by external server

Bottle Routing

@route('/hello/<name>')
def index(name):
  return '<b>Hello {{name}}</b>!'

Get overview of URLs handled: search for "@route"

http://bottlepy.org/docs/dev/index.html

Django Routing

# --- urls.py ---
urlpatterns = patterns('',
    url(r'^articles/2003/$', 'news.views.special_case_2003'),
    url(r'^articles/(\d{4})/$', 'news.views.year_archive'),
    url(r'^articles/(\d{4})/(\d{2})/$', 'news.views.month_archive'),
    url(r'^articles/(\d{4})/(\d{2})/(\d+)/$', 'news.views.article_detail'),
)

Get overview of URLs handled: find settings.py, look for ROOT_URLCONF for name of Python modules with the location of URL map (usually named 'urls'), find referenced module ('urls.py'), read urls.py to understand how urlpatterns is constructed (it may contain included apps).

https://docs.djangoproject.com/en/1.6/topics/http/urls/

Routing (last edited 2014-09-17 17:10:46 by techtonik)

Unable to edit the page? See the FrontPage for instructions.