django-subdomains Documentation

Similar documents
Django-Select2 Documentation. Nirupam Biswas

Bambu API Documentation

django-cms-search Documentation

django-avatar Documentation

django-avatar Documentation

Django-CSP Documentation

Django IPRestrict Documentation

tally Documentation Release Dan Watson

django-debreach Documentation

scrapekit Documentation

django-contact-form Documentation

wagtail-robots Documentation

django-slim Documentation

django-openid Documentation

django-embed-video Documentation

django-conduit Documentation

django simple pagination Documentation

django-session-security Documentation

Django-frontend-notification Documentation

django-revproxy Documentation

django-embed-video Documentation

micawber Documentation

django-intercom Documentation

django-secure Documentation

django-ratelimit-backend Documentation

picrawler Documentation

django-dajaxice Documentation

maya-cmds-help Documentation

django-antispam Documentation

django-model-report Documentation

Django MFA Documentation

Django. Jinja2. Aymeric Augustin DjangoCong 2016

PySpec Documentation. Release Zac Stewart

django-audit-log Documentation

django-facebook-graph Documentation

peval Documentation Release Bogdan Opanchuk

django-embed-video Documentation

alphafilter Documentation

Easy-select2 Documentation

django-geoip Documentation

Kiki Documentation. Release 0.7a1. Stephen Burrows

wagtailtrans Documentation

JSONRPC Documentation

Course Title: Python + Django for Web Application

django-scaffold Documentation

Django Extra Views Documentation

django-renderit Documentation

Gargoyle Documentation

Tangent MicroServices Documentation

Requests Mock Documentation

Python Overpass API Documentation

Trunk Player Documentation

ZeroVM Package Manager Documentation

django-oauth2-provider Documentation

django-cron Documentation

bottle-rest Release 0.5.0

Release 0.8. Repoze Developers

django-allauth-2fa Documentation

Django Debug Toolbar Documentation

Django PAM Documentation

Django REST Framework JSON API Documentation

Django QR Code Documentation

django-telegram-bot Documentation

monolith Documentation

Ensure Documentation. Release Andrey Kislyuk

ejpiaj Documentation Release Marek Wywiał

PrettyPandas Documentation

django-responsive2 Documentation

Bitdock. Release 0.1.0

fragapy Documentation

termite Release 0.0.2

Django: Views, Templates, and Sessions

tolerance Documentation

django-ad-code Documentation

django-messages Documentation

Python Schema Generator Documentation

redis-lua Documentation

Wifiphisher Documentation

The Django Web Framework Part II. Hamid Zarrabi-Zadeh Web Programming Fall 2013

Django File Picker Documentation

django-waffle Documentation

django-modern-rpc Documentation

spacetrack Documentation

Django Phantom Theme Documentation

silk Documentation Release 0.3 Michael Ford

Django Groups Manager Documentation

DJOAuth2 Documentation

django-mama-cas Documentation

Django EL(Endless) Pagination Documentation

The syndication feed framework

django-push Documentation

Django Better Cache Documentation

Dodo Commands Documentation

Django Test Utils Documentation

django-sendgrid-events Documentation

django-cas Documentation

requests-cache Documentation

django-osm-field Release 0.3.1

Django Wordpress API Documentation

CSE 115. Introduction to Computer Science I

Transcription:

django-subdomains Documentation Release 2.1.0 ted kaemming April 29, 2016

Contents 1 Installation 3 2 Quick Start 5 2.1 Example Configuration.......................................... 5 3 Basic Usage 7 3.1 Using Subdomains in Views....................................... 7 3.2 Resolving Named URLs by Subdomain................................. 7 3.3 Resolving Named URLs in Templates.................................. 8 4 API Reference 9 4.1 subdomains.middleware......................................... 9 4.2 subdomains.templatetags.subdomainurls................................ 9 4.3 subdomains.utils............................................. 10 5 Indices and tables 11 Python Module Index 13 i

ii

django-subdomains Documentation, Release 2.1.0 Subdomain helpers for the Django framework, including subdomain-based URL routing and reversing. Contents 1

django-subdomains Documentation, Release 2.1.0 2 Contents

CHAPTER 1 Installation This application is available via the Python Package Index and can be installed with any Python package manager, such as pip or easy_install by running: pip install django-subdomains or: easy_install django-subdomains It is highly recommended to use package version numbers when using this project as a dependency to ensure API consistency. To install the latest version from the repository source, clone the repository and then run make install in the repository directory. 3

django-subdomains Documentation, Release 2.1.0 4 Chapter 1. Installation

CHAPTER 2 Quick Start To set up subdomain URL routing and reversing in a Django project: 1. Add subdomains.middleware.subdomainurlroutingmiddleware to your MIDDLEWARE_CLASSES in your Django settings file. If you are using django.middleware.common.commonmiddleware, the subdomain middleware should come before CommonMiddleware. 2. Configure your SUBDOMAIN_URLCONFS dictionary in your Django settings file. 3. Ensure that you ve set up your SITE_ID in your Django settings file, and that the Site.domain attribute for that site corresponds to the domain name where users will be accessing your site at. 4. If you want to use the subdomain-based {% url %} template tag, add subdomains to your INSTALLED_APPS. 2.1 Example Configuration # This is the urlconf that will be used for any subdomain that is not # listed in ``SUBDOMAIN_URLCONFS``, or if the HTTP ``Host`` header does not # contain the correct domain. # If you're planning on using wildcard subdomains, this should correspond # to the urlconf that will be used for the wildcard subdomain. For example, # 'accountname.mysite.com' will load the ROOT_URLCONF, since it is not # defined in ``SUBDOMAIN_URLCONFS``. ROOT_URLCONF = 'myproject.urls.account' # A dictionary of urlconf module paths, keyed by their subdomain. SUBDOMAIN_URLCONFS = { None: 'myproject.urls.frontend', # no subdomain, e.g. ``example.com`` 'www': 'myproject.urls.frontend', 'api': 'myproject.urls.api', } 5

django-subdomains Documentation, Release 2.1.0 6 Chapter 2. Quick Start

CHAPTER 3 Basic Usage 3.1 Using Subdomains in Views On each request, a subdomain attribute will be added to the request object. You can use this attribute to effect view logic, like in this example: def user_profile(request): try: # Retrieve the user account associated with the current subdomain. user = User.objects.get(username=request.subdomain) except User.DoesNotExist: # No user matches the current subdomain, so return a generic 404. raise Http404 3.2 Resolving Named URLs by Subdomain Included is a subdomains.utils.reverse() function that responds similarly to django.core.urlresolvers.reverse(), but accepts optional subdomain and scheme arguments and does not allow a urlconf parameter. If no subdomain argument is provided, the URL will be resolved relative to the SUBDOMAIN_URLCONFS[None] or ROOT_URLCONF, in order. The protocol scheme is the value of settings.default_url_scheme, or if unset, http: >>> from subdomains.utils import reverse >>> reverse('home') 'http://example.com/' >>> reverse('user-profile', kwargs={'username': 'ted'}) 'http://example.com/users/ted/' >>> reverse('home', scheme='https') 'https://example.com/' For subdomains, the URL will be resolved relative to the SUBDOMAIN_URLCONFS[subdomain] value if it exists, otherwise falling back to the ROOT_URLCONF: >>> from subdomains.utils import reverse >>> reverse('home', subdomain='api') 'http://api.example.com/' >>> reverse('home', subdomain='wildcard') 'http://wildcard.example.com/' 7

django-subdomains Documentation, Release 2.1.0 >>> reverse('login', subdomain='wildcard') 'http://wildcard.example.com/login/' If a URL cannot be resolved, a django.core.urlresolvers.noreversematch will be raised. 3.3 Resolving Named URLs in Templates The subdomainurls template tag library contains a url tag that takes an optional subdomain argument as it s first positional argument, or as named argument. The following are all valid invocations of the tag: {% load subdomainurls %} {% url 'home' %} {% url 'home' 'subdomain' %} {% url 'home' subdomain='subdomain' %} {% url 'user-profile' username='ted' %} {% url 'user-profile' subdomain='subdomain' username='ted' %} If request is in the template context when rendering and no subdomain is provided, the URL will be attempt to be resolved by relative to the current subdomain. If no request is available, the URL will be resolved using the same rules as a call to subdomains.utils.reverse() without a subdomain argument value. An easy way to ensure this functionality is available is to add django.core.context_processors.request() is in your settings.template_context_processors list. Note: For implementation simplicity, this template tag only supports the Django 1.5 {% url %} syntax with variable URL names. For more information, please see the reference documentation for url(). 8 Chapter 3. Basic Usage

CHAPTER 4 API Reference 4.1 subdomains.middleware class subdomains.middleware.subdomainmiddleware A middleware class that adds a subdomain attribute to the current request. get_domain_for_request(request) Returns the domain that will be used to identify the subdomain part for this request. process_request(request) Adds a subdomain attribute to the request parameter. class subdomains.middleware.subdomainurlroutingmiddleware A middleware class that allows for subdomain-based URL routing. process_request(request) Sets the current request s urlconf attribute to the urlconf associated with the subdomain, if it is listed in settings.subdomain_urlconfs. process_response(request, response) Forces the HTTP Vary header onto requests to avoid having responses cached across subdomains. 4.2 subdomains.templatetags.subdomainurls subdomains.templatetags.subdomainurls.url(context, view, subdomain=<object object>, *args, **kwargs) Resolves a URL in a template, using subdomain-based URL resolution. If no subdomain is provided and a request is in the template context when rendering, the URL will be resolved relative to the current request s subdomain. If no request is provided, the URL will be resolved relative to current domain with the settings.root_urlconf. Usage: {% load subdomainurls %} {% url 'view-name' subdomain='subdomain' %} Note: This tag uses the variable URL syntax introduced in Django 1.3 as {% load url from future %} and was made the standard in Django 1.5. If you are upgrading a legacy application from one of the previous 9

django-subdomains Documentation, Release 2.1.0 template tag formats, make sure to quote your constant string URL names to avoid NoReverseMatch errors during template rendering. 4.3 subdomains.utils subdomains.utils.urljoin(domain, path=none, scheme=none) Joins a domain, path and scheme part together, returning a full URL. Parameters domain the domain, e.g. example.com path the path part of the URL, e.g. /example/ scheme the scheme part of the URL, e.g. settings.default_url_scheme Returns a full URL http, defaulting to the value of subdomains.utils.reverse(viewname, subdomain=none, scheme=none, args=none, kwargs=none, current_app=none) Reverses a URL from the given parameters, in a similar fashion to django.core.urlresolvers.reverse(). Parameters viewname the name of URL subdomain the subdomain to use for URL reversing scheme the scheme to use when generating the full URL args positional arguments used for URL reversing kwargs named arguments used for URL reversing current_app hint for the currently executing application subdomains.utils.insecure_reverse = <functools.partial object> reverse() bound to insecure (non-https) URLs scheme subdomains.utils.secure_reverse = <functools.partial object> reverse() bound to secure (HTTPS) URLs scheme subdomains.utils.relative_reverse = <functools.partial object> reverse() bound to be relative to the current scheme 10 Chapter 4. API Reference

CHAPTER 5 Indices and tables genindex modindex search 11

django-subdomains Documentation, Release 2.1.0 12 Chapter 5. Indices and tables

Python Module Index s subdomains.middleware, 9 subdomains.templatetags.subdomainurls, 9 subdomains.utils, 10 13

django-subdomains Documentation, Release 2.1.0 14 Python Module Index

Index G get_domain_for_request() (subdomains.middleware.subdomainmiddleware method), 9 I insecure_reverse (in module subdomains.utils), 10 P process_request() (subdomains.middleware.subdomainmiddleware method), 9 process_request() (subdomains.middleware.subdomainurlroutingmiddleware method), 9 process_response() (subdomains.middleware.subdomainurlroutingmiddleware method), 9 R relative_reverse (in module subdomains.utils), 10 reverse() (in module subdomains.utils), 10 S secure_reverse (in module subdomains.utils), 10 SubdomainMiddleware (class in subdomains.middleware), 9 subdomains.middleware (module), 9 subdomains.templatetags.subdomainurls (module), 9 subdomains.utils (module), 10 SubdomainURLRoutingMiddleware (class in subdomains.middleware), 9 U url() (in module subdomains.templatetags.subdomainurls), 9 urljoin() (in module subdomains.utils), 10 15