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
File details
Details for the file django-icase-0.1.1.tar.gz
.
File metadata
- Download URL: django-icase-0.1.1.tar.gz
- Upload date:
- Size: 5.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f831dfe7e095467fa5d74931ea790e7bf87b7dc30185e3f6ec4a2edfaea356e2 |
|
MD5 | 37a9b2cc295a8e7f4389535c9ffb8dbc |
|
BLAKE2b-256 | 37a94389e19f2c3d5910770e85573b4a8a6757f4e85b26d1211dac8505ebf396 |
File details
Details for the file django_icase-0.1.1-py2.py3-none-any.whl
.
File metadata
- Download URL: django_icase-0.1.1-py2.py3-none-any.whl
- Upload date:
- Size: 8.4 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 411d3f3fd2aedfd10f14b887338d90074461470aa1be722374867922184dc76e |
|
MD5 | b4ec7b30eb06f0beccb985a4cfcde20b |
|
BLAKE2b-256 | a266be3f966d94b734993e9c89923a9a32e358b7d853e9d95e932a3b5f59b7fe |