A simple Django Url Shortener.
Project description
django-link-shortener is a simple time and usage sensitive url shortening app.
Uses A-Za-z0-9 with the exception of I, i and 1.
Requires user to be logged in for link creation.
Usage
pip install django-link-shortener
Add “shortener” to your INSTALLED_APPS setting like this:
INSTALLED_APPS = [ ... 'shortener', ]
Include the polls URLconf in your project urls.py like this:
path('s/', include('shortener.urls')),
Run python manage.py migrate to create the shortener models.
Testing
Add the following to settings
` SHORTENER_ENABLE_TEST_PATH = True `
Start the development server and visit http://127.0.0.1:8000/s/test/<My-URL-HERE> to create a test shortcode.
or
Use shortener.create(user, link) to generate a link via code. Use shortener.expand(link) to revert
Visit http://127.0.0.1:8000/s/<shortcode>/ to be redirected
Configuration Options
Place in settings.py. Each setting be overridden on a per-user basis using the admin UrlProfile section
- SHORTENER_ENABLED
Default: True
Controls whether users without a shortener profile can create shortlinks.
- SHORTENER_MAX_URLS
Default: -1
Controls the default maximum limit of generated urls per account. -1 sets infinite.
- SHORTENER_MAX_CONCURRENT
Default: -1
Controls the default maximum limit of concurrent (active) generated urls per account. -1 sets infinite
- SHORTENER_LIFESPAN
Default: -1
Sets the default lifespan of links in seconds -1 sets infinite
- SHORTENER_MAX_USES
Default: -1
Sets the default amount of times a link can be followed -1 sets infinite
- SHORTENER_LENGTH
Default: 5
Note: Omitted from UrlProfile
Sets how many digits should be used for links. Tries up to three times to generate a unique shortcode where Each failure will result in length temporaily being increased by 1.
- SHORTENER_ENABLE_TEST_PATH
Default: False
If true, creates shortlinks for logged in users at s/test/<<url>>/
The response is the shortcode to use used at s/<<shortcode>>
Common Use Cases
goo.gl type usage (default). Unlimited concurrent links for an unlimited length of time
SHORTENER_ENABLED = True SHORTENER_MAX_URLS = -1 SHORTENER_MAX_CONCURRENT = -1 SHORTENER_LIFESPAN = -1 SHORTENER_MAX_USES = -1
Internal temporary link usage (such as on nodeferret.com). 100 Temp links per minute. 1 usage per link.
SHORTENER_ENABLED = True SHORTENER_MAX_URLS = -1 SHORTENER_MAX_CONCURRENT = 100 # To prevent spamming SHORTENER_LIFESPAN = 600 SHORTENER_MAX_USES = 1
Changelog
v0.4
Allow null values in UrlProfile; null fields will use global values
str representation of UrlProfile in admin
add user to str representation of UrlMap
removed 256 char limit on full_url (Credit: Khaeshah)
Upgrade Instructions
0.3 -> 0.4
pip install django-link-shortener==0.4 python manage.py migrate
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for django-link-shortener-0.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 69096649ba8d4e719a3d7dc189226dc8c42a2f3424d1dfeb7bd0d33e48e2b566 |
|
MD5 | ac800573d08f2a381274b7f63b11e9d6 |
|
BLAKE2b-256 | fab798ad8bbda9bb16ec24868ff3d58e48484e1da809607281f08ac6d758cae2 |