Skip to main content

An improved URL selector to choose between internal models and external URLs

Project description

https://img.shields.io/travis/edoburu/django-any-urlfield/master.svg?branch=master https://img.shields.io/pypi/v/django-any-urlfield.svg https://img.shields.io/pypi/l/django-any-urlfield.svg https://img.shields.io/codecov/c/github/edoburu/django-any-urlfield/master.svg

django-any-urlfield

The any_urlfield module provides an improved URL selector that supports both URLs to internal models and external URLs.

This addresses is a common challenge in CMS interfaces; where providing a URLField makes it hard to enter internal URLs, while providing a ModelChoiceField makes it too inflexible. This package provides the both of both worlds.

For more details, see the documentation at Read The Docs.

Screenshot

AnyUrlField, with external URL input.
AnyUrlField, with internal page input.

Installation

First install the module, preferably in a virtual environment:

pip install django-any-urlfield

Add the module to the installed apps:

INSTALLED_APPS += (
    'any_urlfield',
)

Usage

Add the field to a Django model:

from django.db import models
from any_urlfield.models import AnyUrlField

class MyModel(models.Model):
    title = models.CharField("Title", max_length=200)
    url = AnyUrlField("URL")

By default, the AnyUrlField only supports linking to external pages.

Register any model that the AnyUrlField should support linking to:

from any_urlfield.models import AnyUrlField
AnyUrlField.register_model(Article)

Now, the AnyUrlField offers users a dropdown field to directly select an article.

The default field is a django.forms.models.ModelChoiceField field with a django.forms.widgets.Select widget. This can be customized using the form_field and widget parameters:

from any_urlfield.models import AnyUrlField
from any_urlfield.forms import SimpleRawIdWidget

AnyUrlField.register_model(Article, widget=SimpleRawIdWidget(Article))

That will display the Article model as raw input field with a browse button.

Contributing

This module is designed to be generic. In case there is anything you didn’t like about it, or think it’s not flexible enough, please let us know. We’d love to improve it!

If you have any other valuable contribution, suggestion or idea, please let us know as well because we will look into it. Pull requests are welcome too. :-)

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-any-urlfield-2.6.2.tar.gz (28.4 kB view details)

Uploaded Source

Built Distribution

django_any_urlfield-2.6.2-py2.py3-none-any.whl (34.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file django-any-urlfield-2.6.2.tar.gz.

File metadata

  • Download URL: django-any-urlfield-2.6.2.tar.gz
  • Upload date:
  • Size: 28.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.10.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/2.7.17

File hashes

Hashes for django-any-urlfield-2.6.2.tar.gz
Algorithm Hash digest
SHA256 34602418a8ce10fdb514fc71aef9dac680ef38658087bfa7578f84f276e3bc7b
MD5 eddf4d1ecf4b911679dc72f5a7e7e867
BLAKE2b-256 7f9d9df7daf6388979734f651061be6036d8b9cc9b12f1aee58835137b9e733b

See more details on using hashes here.

File details

Details for the file django_any_urlfield-2.6.2-py2.py3-none-any.whl.

File metadata

  • Download URL: django_any_urlfield-2.6.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 34.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.10.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/2.7.17

File hashes

Hashes for django_any_urlfield-2.6.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a27af979a3101bc3596d4ddc1031acaaf32d358a6adb8052d9f1f6219350d635
MD5 f7ab794bc3ef59845a512f691a7e69f6
BLAKE2b-256 08639fcb53b74981e26fcb7048da9617d1a6fef9a07f6df7e78045ac3108a928

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page