A few tools for helping with case-insensitvity in Django URLs.
Project description
A few tools for helping with case-insensitvity in Django URLs.
404 handler that redirects non-matched, non-lowercase URLs. E.g. if /About/ is not matched, the handler will redirect to /about/ before returning a 404
Middleware that enforces lower-cased URLs. E.g. all non-lowercased URLs will be redirected to their lowercased form.
Overview
If you only need to match URL patterns, then it’s simple to add case-insensitivity to your regular expressions.:
urlpatterns = patterns('', (r'^(?i)admin/(.*)', admin.site.root), (r'^(?i)static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_DOC_ROOT, 'show_indexes': True}), (r'^(?i)login/$', 'django.contrib.auth.views.login'), (r'^(?i)logout/$', do_logout), )
From Alex Martelli’s Stack Overflow explanation.
However this doesn’t do anything to match slugs, which are often case-sensitive matched by default - it’s up to the app. If the app uses a straightforward = expression, e.g.:
object = MyModel.objects.get(slug=slug)
Then MySlug won’t match myslug.
There are also instances where you want to enforce URL casing for other reasons (or a client does!).
Installation
Install django-icase:
pip install django-icase
To use the custom 404 handler, simply specify this in your project urls.py configuration.:
handler404 = 'icase.views.icase_404_handler'
To use the lowercasing middleware, add it to your INSTALLED_MIDDLEWARE.:
INSTALLED_MIDDLEWARE = ( 'icase.middleware.LowerCased', ... )
Django & Python support
Actively supported versions of Django are supported by this app, although there is little reason it should not work on others.
Tested against Python 3 and Python 2.7.9.
History
0.1.1 (2015-05-06)
Update django-nose reference to support Django 1.7+
0.1.0 (2015-03-25)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_icase-0.1.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 411d3f3fd2aedfd10f14b887338d90074461470aa1be722374867922184dc76e |
|
MD5 | b4ec7b30eb06f0beccb985a4cfcde20b |
|
BLAKE2b-256 | a266be3f966d94b734993e9c89923a9a32e358b7d853e9d95e932a3b5f59b7fe |