Django model and form fields that performs URL normalization. For example it adds 'http://' prefix and forces punicode encoding for non-ascii URLS. There are also fields that stores a list of URLs.
Tested with Django 3.0.x (should also work with 2.x)
$ pip install django-smarturlfield
SmartURLFormField renders as <input> and can handle values like this:
http://example.com
- example.com (normalized to
http://example.com
)- земфира.рф (normalized to
http://xn--80ajfftz0a.xn--p1ai
)
MultipleSmartURLFormField renders as <textarea> and can store multiple URLs separated by newline.
In forms:
from smarturlfield import SmartURLFormField, MultipleSmartURLFormField
class MyForm(forms.Form):
url = SmartURLFormField()
url_list = MultipleSmartURLFormField() # textarea
# ...
In models:
from smarturlfield import SmartURLDbField, MultipleSmartURLDbField
class MyModel(models.Model):
url = SmartURLDbField()
url_list = MultipleSmartURLDbField() # textarea
# ...