A pluggable Bible viewer for Dango apps including the KJV text (bundled as a json fixture.)
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 2 commits behind richardbolt:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Django App for a full fledged Bible viewer

A Django app that has a full Bible viewer, including the KJV text by default. Other translation texts can be easily added. Also includes scripture models and admin definitions to easily add your own scripture verse and passages to your project.

Included out of the box is the King James Version text as the default version.

This project is in it's early stages, but does already include a full Bible viewer for the KJV text, template tags to use in your templates, and a Scripture model to use in your own models.

You can see it in action here.


Uses python-bible for computing and handling the verse and passage lookups. You will need that on your path somewhere. This dependency will possibly be removed in the future.


  • Make sure the dependencies are satisfied and this module is somewhere on your python path.
  • Add 'bibletext' to your INSTALLED_APPS in your settings.py.
  • Create your database tables: python manage.py syncdb.
  • Install initial data from fixtures: python manage.py loaddata kjv.json.


Template tags

There are template tags to use:

{% load bibletext_books bibletest_verses bibletext_chapter %}

All the books of the bible, listed:
{% books %} or {% books MyTranslation %}

All the chapters and verse counts from John listed:
{% chapters 'John' %}

The text of John 3 (the whole chapter):
{% chapter 'John' 3 %}

The text of 3 John (the whole book since chapter defaults to 1, and there is only one chapter):
{% chapter '3 John' %}

A passage (John 3:16 - 3:18):
{% passage 'John 3:16 - 3:18' %} or {% passage 'Jn 3:16 - 3:18' %}

A specific verse (John 3:16):
{% verse 'John 3:16' %} or {% verse 'Jn 3:16' %}

Views and urls

The easiest way to include the whole Bible in your website is to add (r'^bible/', include('bibletext.urls')), to your urls.py. This provides an easily navigable default KJV Bible, and any versions you add will also show up at the root view to navigate to. You can override any of the templates, or specify different templates to use by passing template_name to the view you wish to change.

You may wish to override templates/bibletext/base.html and provide some CSS to make it look nice.

Default CSS and standalone templates will be forthcoming in a classical style.


There is a Scripture model (living in models/scripture.py) for usage in your own models like so:


from bibletext.models import Scripture

class Sermon(models.Model):
    title = models.CharField(max_length=100, blank=True)
    date = models.DateField(help_text="Date of the Sermon.")
    preacher = models.ForeignKey(Preacher, blank=True, null=True)
    audio = models.FileField(upload_to='%Y/%m %B')
    published = models.BooleanField(default=True)

    scripture = generic.GenericRelation(Scripture) # optional, but provides additional APIs.


from bibletext.admin import ScriptureInline

class SermonAdmin(admin.ModelAdmin):
    inlines = [