URLField — Django Models

Python Methods and Functions


 field_name = models.URLField (max_length = 200,  ** options ) 

URLField has one additional optional argument:


The maximum length (in characters) of the field. Maximum max_length applies at the database level and when validated by Django using MaxLengthValidator . If not specified, the default is 200.

Django URLField Model Explanation

Example URLField illustration. Consider a project named pythonengineering that has an application named geeks .

Refer to the following articles to check how to create a project and an app in Django.

Enter the following code into the models.py file of the geeks application.

from django.db import models

from django.db.models import Model

# Create your models here.


class GeeksModel (Model):

geeks_field = models.URLField (max_length = 200 )

Add the geek app to INSTALLED_APPS

# App definition



  ' django.contrib.admin' ,

'django.contrib.auth' ,

'django.contrib.contenttypes' ,

'django.contrib.sessions' ,

'django.contrib.messages' ,

'django.contrib.staticfiles' ,

'geeks' ,


Now when we run makemigrations from the terminal,

 Python manage.py makemigrations 

A new folder named migrations will be created in the geeks directory with a file named 0001_initial. py

# Generated by Django 2.2.5 at 2019-09-25 06:00


from django.db import migrations, models


class Migration (migrations.Migration):


initial = True


  dependencies = [



operations = [

  migrations.CreateModel (

name = 'GeeksModel ' ,

  fields = [

( 'id'

  mode ls.AutoField (

auto_created = True ,

primary_key = True ,

serialize = False

verbose_name = ' ID'


( 'geeks_field'

  models.URLFie ld (

max_length = 200 ,





Now run ,

 Python manage.py migrate 

Thus, geeks_field geeks_field is generated when migrations are run in the project. This is a field for storing URLs validated by URLValidator .

How to use a URLField?

URLField is used to store URLs in the database. You can store any URLs, both internal and external. URLField must be given the max_length argument to specify the maximum length of the string that you want to store. On a production server, after deploying a Django app, space is very limited. Therefore, it is always optimal to use max_length as required by the field. Let's instantiate the URLField we've created and see if it works.

# model import
# from a geek app

from geeks.models import GeeksModel

# instantiate
# GeeksModel

geek_object = GeeksModel.objects.create (geeks_field = " https://www.python.engineering / charfield-django-models / " )

ge ek_object.save ()

Now let's check this on the admin server ... We have created a GeeksModel instance. 

Field options

Field options — they are arguments given to each field to apply some constraint or to convey a particular characteristic to a particular field. For example, adding the null = True argument to the URLField will allow it to store null values ​​for that table in a relational database. 
Here are the field options and attributes that the URLField can use.

Field Options Description
Null If True , Django will store empty values ​​as NULL in the database. Default is False.
Blank If True , the field is allowed to be blank ... Default is False.
Choices An iterable (eg, a list or tuple) of 2-tuples to use as choices for this field.
Default The default value for the field. This can be a value or a callable object. If callable it will be called every time a new object is created.
help_text Extra “help” text to be displayed with the form widget. It's useful for documentation even if your field isn't used on a form.
primary_key If True, this field is the primary key for the model .
Unique If True, this field must be unique throughout the table.