What does a URL look like?
Example: /gsoc/org/home/google/gsoc2013/melange
- The first path component is considered the “module”, some examples.
- /gsoc are the Google Summer of Code related urls
- /gci are the Google Code-in related urls
- /tasks are all the Google Appengine TaskQueue related URLs, these are followed by another component to indicate which module they belong to. All urls starting with /tasks can only be hit by a AppEngine developer or an internal AppEngine generated request.
- Second is “component”, this indicates the different items and concepts in Melange. This component might consist out of multiple parts. Examples are:
- /dashboard the dashboard for users
- /home the homepage of the program
- /document any documents in the program
- /admin the administration pages for Hosts
- /org/application organization applications
- Third is “function” or “action”, such as
- Fourth path component is ID, keyname, or enough of the key name to unambiguously identify the viewed entity. E.g.
Module Component
Melange knows three module components:
- gsoc, Google Summer of Code programs
- gci, Google Code-In programs
- core, general site-wide configuration and pages are handled here. Core pages do not have a module component in the url.
Components component
Action component
- Under what conditions does function/action appear? If it’s a document, “edit” and “show” will probably appear... but there’s not really consistent criteria
Identifier component
How to define a URL in the code?
- Common patterns live in url_patterns.py
- URLs are registered with DjangoUrlPatterns during frontend instantiation
- See each module’s callback.py module
Conventions around GET parameters
- Get parameters are used for things like telling the user that their form was saved correctly
- GCI uses Get parameters to determine action in task view.