| #summary Url scheme in melange | 
 | #labels Contents-Skeleton | 
 |  | 
 | <wiki:toc max_depth="2" /> | 
 |  | 
 | = 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 | 
 |     * */edit* | 
 |     * */show* | 
 |     * */create* | 
 |     * */update* | 
 |   * Fourth path component is ID, keyname, or enough of the key name to unambiguously identify the viewed entity. E.g. | 
 |     * */google/gsoc2013/melange* | 
 |  | 
 | == 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. |