Bootstrap 3 integration with Django.

Overview

django-bootstrap3

CI Coverage Status Latest PyPI version Any color you like

Bootstrap 3 integration for Django.

Goal

The goal of this project is to seamlessly blend Django and Bootstrap 3.

Requirements

Python 3.6 or newer with Django >= 2.2 or newer.

Documentation

The full documentation is at https://django-bootstrap3.readthedocs.io/

Installation

  1. Install using pip:

    pip install django-bootstrap3

    Alternatively, you can install download or clone this repo and call pip install -e ..

  2. Add to INSTALLED_APPS in your settings.py:

    INSTALLED_APPS = (
        # ...
        "bootstrap3",
        # ...
    )
  3. In your templates, load the bootstrap3 library and use the bootstrap_* tags:

Example template

{% load bootstrap3 %}

{# Display a form #}

<form action="/url/to/submit/" method="post" class="form">
    {% csrf_token %}
    {% bootstrap_form form %}
    {% buttons %}
        <button type="submit" class="btn btn-primary">Submit</button>
    {% endbuttons %}
</form>

Demo

A demo app is provided in demo. You can run it from your virtualenv with python manage.py runserver.

Bugs and suggestions

If you have found a bug or if you have a request for additional functionality, please use the issue tracker on GitHub.

https://github.com/zostera/django-bootstrap3/issues

License

You can use this under BSD-3-Clause. See LICENSE file for details.

Author

Developed and maintained by Zostera.

Original author: Dylan Verheul.

Thanks to everybody that has contributed pull requests, ideas, issues, comments and kind words.

Please see AUTHORS for a list of contributors.

Comments
  • Add a layout capabilitie to {% bootstrap_form %}

    Add a layout capabilitie to {% bootstrap_form %}

    situation

    for now, the tag {% bootstrap_form %} create an horizontal OR inline form.

        <form role="form" method="post">
            {% csrf_token %}
            {% bootstrap_form form %}
            {% buttons submit='OK' reset="Cancel" %}{% endbuttons %}
        </form>
    

    forms_orig

    cons

    But what if we want two field on the same line for readability purpose ? we then must stop use {% bootstrap_form %} and switch to a {% bootstrap_field %} for each fields and create our line with .row and .col-md-6.

        <form role="form" method="post">
            {% csrf_token %}
          <div class="row">
            <div class="col-md-6">
              {%  bootstrap_field form.subject %}
            </div>
            <div class="col-md-6">
              {%  bootstrap_field form.password %}
            </div>
          </div>
          {%  bootstrap_field form.message %}
          {% buttons submit='OK' reset="Cancel" %}{% endbuttons %}
        </form>
    

    form_password_n_subject

    this is a probleme as soon as the form is a little dynamic and when some field can be missing (ie because of user perms). so you will soon need to add some {% if %} that should not be used if {% bootstrap_form %} was used

        <form role="form" method="post">
            {% csrf_token %}
          <div class="row">
            <div class="col-md-6">
              {%  bootstrap_field form.subject %}
            </div>
            <div class="col-md-6">
              {%  bootstrap_field form.password %}
            </div>
          </div>
          {%  bootstrap_field form.message %}
          {%  if form.maybemissing %}
            {%  bootstrap_field form.maybemissing %}
          {%  endif %}
          {% buttons submit='OK' reset="Cancel" %}{% endbuttons %}
        </form>
    

    if you don't use {% if %} you will have the BootstrapError: Parameter "field" should contain a valid Django BoundField.

    enhancement

    it seem that the layout of {% bootstrap_form %} should be more powerfull and allow us to create a real layout, not just «horizontal» or «inline».

    so, we can have in form.py

    
    class MyLayoutForm(forms.Form):
        layout = [
            ("subject", "password"),
            "message",
            "maybemissing"
        ]
        subject = forms.CharField(
            max_length=100,
            help_text='my_help_text',
            required=True,
            widget=forms.TextInput(attrs={'placeholder': 'placeholdertest'}),
        )
        password = forms.CharField(widget=forms.PasswordInput)
        message = forms.CharField(required=False, help_text='<i>my_help_text</i>')
        maybemissing = forms.EmailField(
            label='Sender © unicode',
            help_text='E.g., "[email protected]"')
    
        def __init__(self, *args, **kwargs):
            super(MyLayoutForm, self).__init__(*args, **kwargs)
            if whatever:
                self.fields.pop("maybemissing")
    

    and keep the simple {% bootstrap_form %} in our template, as desired :

        <form role="form" method="post">
            {% csrf_token %}
            {% bootstrap_form form %}
            {% buttons submit='OK' reset="Cancel" %}{% endbuttons %}
        </form>
    

    by adding the "layout" attribute of the Form, the {% bootstrap_form %} will use it for the form rendering. if none layout is given, it will create one with all fields, which will render exactly the same way as before.

    the layout will allow to create the .row and .col-md-x recursively. It will take 2 possible type

    list and tuple

    so, to get the following form, we can just add a list with tuples :

        class MyLayoutForm(forms.Form):
            layout = [
                ("subject", "password"),
                "message",
                "maybemissing"
            ]
            ...
    

    form_password_n_subject

    Col and Row

    the col and Row are the final step of the layout processing. all given layout will be computed in Col and Row. the {% bootstrap_form %} will use it to render the correct layout.

    The Col class

    Col(unicode: fieldname, unicode: class_="col-md-x", *rows)

    the Col represent a <div class="col-md-xx">. it can contains other rows or a field of the form (by his name)

    Col("message")
    
    Col("message", class_="col-md-6 red")
    
    Col(
        Row("message"),
        Row("password")
    )
    

    the Row class

    Row(*cols_or_fields, **field_config)

    a Row can contains many Col, or the name of the fields. the related Col will be created to give equal size of all fields. the desired class can be given with a dict like construction. where the name of the field is the key, and the class is the value

    the followings lines are equivalent :

    Row("message", "subject")
    
    Row(message="col-md-6", subject="col-md-6")
    
    Row(Col("message", class_="col-md-6"), Col("subject", class_="col-md-6"))
    

    a Row should always contains Col and Col can contains Row or the field itself. a Row can be used as :

    layout = [
        Row(subject="col-md-8 col-xs-6", password="col-md-4 col-xs-6"),
        Row("message"),
        Row(maybemissing="col-md-12"),
    ]
    

    Col and Row mixed up with list and tuples

    the list constuction is compiled in Row/Col construction. the 3 following initialization will be identical.

    layout = (
        ("message", "subject"),
        ("mybemissing",)
    ) 
    layout = Col(
        ("message", "subject"),
        ("mybemissing",)
    )
    layout = Col(
        Row("message", "subject"),
        Row("mybemissing",)
    ) 
    

    Col and Row recursivity

    you can add row into cols and cols into Row without deep limitation

    layout = Row(
        Col(Row(Col("subject")), Row(Col("message"))),
        Col("password", "maybemissing"),
    )
    

    the last hope

    with this logic, it can even be possible to add more layout class with Row and Col, like Tab, Fieldset or Accordion.

    opened by onysos 16
  • How to use local bootstrap?

    How to use local bootstrap?

    Of course, I can override css_url with hardcoded URL. But how to use static tag to get css file url without overriding whole bootstrap3.html template?

    opened by cl0ne 14
  • Fix Django 1.9 warning

    Fix Django 1.9 warning

    django-bootstrap3/bootstrap3/utils.py:142: RemovedInDjango110Warning: render() must be called with a dict, not a Context.
      return template.render(Context(context))
    
    opened by jonashaag 13
  • Python33 Django 1.6.5 - demo error

    Python33 Django 1.6.5 - demo error

    I have Python33 with Django 1.6.5, when I'm trying to run demo got error.

    Installed c:\tmp\django-bootstrap3-4.7.0
    

    Successfully installed django-bootstrap3 Cleaning up...

    C:\tmp\django-bootstrap3-4.7.0\demo>python manage.py runserver Traceback (most recent call last): File "manage.py", line 10, in execute_from_command_line(sys.argv) File "C:\Program Files (x86)\Python33\lib\site-packages\django\core\management init.py", line 399, in execute_from_command_line utility.execute() File "C:\Program Files (x86)\Python33\lib\site-packages\django\core\management init.py", line 392, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "C:\Program Files (x86)\Python33\lib\site-packages\django\core\management init.py", line 261, in fetch_command commands = get_commands() File "C:\Program Files (x86)\Python33\lib\site-packages\django\core\management init.py", line 107, in get_commands apps = settings.INSTALLED_APPS File "C:\Program Files (x86)\Python33\lib\site-packages\django\conf__init__.p y", line 54, in getattr self.setup(name) File "C:\Program Files (x86)\Python33\lib\site-packages\django\conf__init_.p y", line 50, in setup self.configure_logging() File "C:\Program Files (x86)\Python33\lib\site-packages\django\conf__init.p y", line 72, in configure_logging from django.utils.log import DEFAULT_LOGGING File "C:\Program Files (x86)\Python33\lib\site-packages\django\utils\log.py", line 7, in from django.views.debug import ExceptionReporter, get_exception_reporter_fil ter File "C:\Program Files (x86)\Python33\lib\site-packages\django\views\debug.py" , line 10, in from django.http import (HttpResponse, HttpResponseServerError, File "C:\Program Files (x86)\Python33\lib\site-packages\django\http__init_.p y", line 2, in from django.http.request import (HttpRequest, QueryDict, UnreadablePostError , File "C:\Program Files (x86)\Python33\lib\site-packages\django\http\request.py ", line 14, in from django.http.multipartparser import MultiPartParser File "C:\Program Files (x86)\Python33\lib\site-packages\django\http\multipartp arser.py", line 10, in import cgi File "C:\Program Files (x86)\Python33\lib\cgi.py", line 40, in import html File "C:\tmp\django-bootstrap3-4.7.0\bootstrap3\html.py", line 4, in from django.forms.widgets import flatatt File "C:\Program Files (x86)\Python33\lib\site-packages\django\forms__init__. py", line 8, in from django.forms.fields import * File "C:\Program Files (x86)\Python33\lib\site-packages\django\forms\fields.py ", line 17, in from django.forms.util import ErrorList, from_current_timezone, to_current_t imezone File "C:\Program Files (x86)\Python33\lib\site-packages\django\forms\util.py", line 4, in from django.utils.html import format_html, format_html_join File "C:\Program Files (x86)\Python33\lib\site-packages\django\utils\html.py", line 12, in from django.utils.text import normalize_newlines File "C:\Program Files (x86)\Python33\lib\site-packages\django\utils\text.py", line 11, in from django.utils.six.moves import html_entities ImportError: cannot import name html_entities

    bug awaiting feedback 
    opened by omcdr 13
  • 'str' object has no attribute 'non_field_errors'

    'str' object has no attribute 'non_field_errors'

    Error during template rendering

    In template C:...............\blog\index.html, error at line 21

    <form action="/url/to/submit/" method="post" class="form">
    

    20 {% csrf_token %} 21 {% bootstrap_form form %} 22 {% bootstrap_form_buttons %} 23 26 {% end_bootstrap_form_buttons %}

    opened by znetor 13
  • Add basic tag that generates tabs

    Add basic tag that generates tabs

    Will be filling branch with more commits as I implement them.

    Goals:

    • extra css classes for li elements
    • pills variant
    • bootstrap_tabs_activate for corresponding js snippet
    • docs (whistle)
    • maybe: bootstrap_tabs_container block tag for the actual tab content
    opened by melvyn-sopacua 12
  • Django 1.9: template tag output needs to be marked as safe

    Django 1.9: template tag output needs to be marked as safe

    Edit: I know that Django 1.9 hasn't been released yet. :)

    Django 1.9 tightens up some security around template tags: https://docs.djangoproject.com/en/dev/releases/1.9/#simple-tag-now-wraps-tag-output-in-conditional-escape

    This change in Django is causing the bootstrap_form template tag to output the form markup as text instead of an actual form - ie. you see the html markup for the fields rather than the fields themselves.

    bug 
    opened by jaddison 11
  • bootstrap3 cannot load template tags

    bootstrap3 cannot load template tags

    Trying to migrate from bootstrap_toolkit to bootstrap3, both released by you. Bootstrap_toolkit works perfectly, however when I download bootstrap3, add to settings.py and include the appropriate tag { load bootstrap3 } I get a Django error that states bootstrap3 is not a valid tag library. Checked the directory /usr/local/lib/python2.7 /distpackage and bootstrap3 is in the correct spot, along with the old bootstrap_toolkit. Am I missing something?

    Best, Greg

    opened by gcperrin 11
  • Error on upgrading to 11.0.0

    Error on upgrading to 11.0.0

    I tried to upgrade from 9.0.0 to 11.0.0 but I keep getting the following BootstrapError when I try to access my app. I can't figure out what the issue is, so I've gone back to 9.0.0 in the meantime. Any ideas?

    Environment:
    
    
    Request Method: GET
    Request URL: http://example.com/login/
    
    Django Version: 1.11.15
    Python Version: 3.6.5
    Installed Applications:
    ['harold.apps.HaroldConfig',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'bootstrap3']
    Installed Middleware:
    ['django.middleware.security.SecurityMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.middleware.common.CommonMiddleware',
     'django.middleware.csrf.CsrfViewMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'harold.middleware.current_user.CurrentUserMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
     'django.middleware.clickjacking.XFrameOptionsMiddleware']
    
    
    Template error:
    In template /opt/django/leasea/harold/templates/harold/login.html, error at line 22
       Function "url_to_attrs_dict" expects a string or a dict with key "url".   12 : 
       13 :     <meta charset="utf-8">
       14 :     <meta http-equiv="X-UA-Compatible" content="IE=edge">
       15 :     <meta name="viewport" content="width=device-width, initial-scale=1">
       16 :     <meta name="description" content="">
       17 :     <meta name="author" content="">
       18 : 
       19 :     <title>Login</title>
       20 : 
       21 :     <!-- Bootstrap Core CSS -->
       22 :      {% bootstrap_css %} 
       23 : 
       24 :     <!-- MetisMenu CSS -->
       25 :     <link href="{% static 'harold/vendor/metisMenu/metisMenu.min.css' %}" rel="stylesheet">
       26 : 
       27 :     <!-- Custom CSS -->
       28 :     <link href="{% static 'harold/dist/css/sb-admin-2.min.css' %}" rel="stylesheet">
       29 : 
       30 :     <!-- Morris Charts CSS -->
       31 :     <link href="{% static 'harold/vendor/morrisjs/morris.css' %}" rel="stylesheet">
       32 : 
    
    
    Traceback:
    
    File "/opt/django/leasea_venv/lib/python3.6/site-packages/bootstrap3/utils.py" in url_to_attrs_dict
      184.             url_value = url["url"]
    
    During handling of the above exception ('NoneType' object is not subscriptable), another exception occurred:
    
    File "/opt/django/leasea_venv/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
      41.             response = get_response(request)
    
    File "/opt/django/leasea_venv/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
      217.                 response = self.process_exception_by_middleware(e, request)
    
    File "/opt/django/leasea_venv/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
      215.                 response = response.render()
    
    File "/opt/django/leasea_venv/lib/python3.6/site-packages/django/template/response.py" in render
      107.             self.content = self.rendered_content
    
    File "/opt/django/leasea_venv/lib/python3.6/site-packages/django/template/response.py" in rendered_content
      84.         content = template.render(context, self._request)
    
    File "/opt/django/leasea_venv/lib/python3.6/site-packages/django/template/backends/django.py" in render
      66.             return self.template.render(context)
    
    File "/opt/django/leasea_venv/lib/python3.6/site-packages/django/template/base.py" in render
      207.                     return self._render(context)
    
    File "/opt/django/leasea_venv/lib/python3.6/site-packages/django/template/base.py" in _render
      199.         return self.nodelist.render(context)
    
    File "/opt/django/leasea_venv/lib/python3.6/site-packages/django/template/base.py" in render
      990.                 bit = node.render_annotated(context)
    
    File "/opt/django/leasea_venv/lib/python3.6/site-packages/django/template/base.py" in render_annotated
      957.             return self.render(context)
    
    File "/opt/django/leasea_venv/lib/python3.6/site-packages/django/template/library.py" in render
      203.         output = self.func(*resolved_args, **resolved_kwargs)
    
    File "/opt/django/leasea_venv/lib/python3.6/site-packages/bootstrap3/templatetags/bootstrap3.py" in bootstrap_css
      207.     rendered_urls = [render_link_tag(bootstrap_css_url())]
    
    File "/opt/django/leasea_venv/lib/python3.6/site-packages/bootstrap3/utils.py" in render_link_tag
      120.     url_dict = url_to_attrs_dict(url, url_attr="href")
    
    File "/opt/django/leasea_venv/lib/python3.6/site-packages/bootstrap3/utils.py" in url_to_attrs_dict
      187.                 'Function "url_to_attrs_dict" expects a string or a dict with key "url".'
    
    Exception Type: BootstrapError at /login/
    Exception Value: Function "url_to_attrs_dict" expects a string or a dict with key "url".
    
    opened by patabongo 10
  • Fix Deprecation warning in Django 1.9

    Fix Deprecation warning in Django 1.9

    about first param to template.render:

    /home/jieter/.virtualenvs/bootstrap/local/lib/python2.7/site-packages/bootstrap3/utils.py:142: RemovedInDjango110Warning: render() must be called with a dict, not a Context.
      return template.render(Context(context))
    

    Let's see if this works better than my try in #292.

    opened by jieter 10
  • Fix Deprecation warning in Django 1.9

    Fix Deprecation warning in Django 1.9

    about first param to template.render:

    [...]bootstrap3/utils.py:142: RemovedInDjango110Warning: render() must be called with a dict, not a Context.
      return template.render(Context(context))
    

    Fixes #279 and #290

    opened by jieter 10
  • Bump tox from 3.27.1 to 4.1.1

    Bump tox from 3.27.1 to 4.1.1

    Bumps tox from 3.27.1 to 4.1.1.

    Release notes

    Sourced from tox's releases.

    4.1.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/tox-dev/tox/compare/4.0.19...4.1.0

    4.0.18

    What's Changed

    Full Changelog: https://github.com/tox-dev/tox/compare/4.0.17...4.0.18

    4.0.17

    What's Changed

    New Contributors

    Full Changelog: https://github.com/tox-dev/tox/compare/4.0.16...4.0.17

    4.0.16

    What's Changed

    Full Changelog: https://github.com/tox-dev/tox/compare/4.0.15...4.0.16

    4.0.15

    What's Changed

    Full Changelog: https://github.com/tox-dev/tox/compare/4.0.14...4.0.15

    4.0.14

    What's Changed

    ... (truncated)

    Changelog

    Sourced from tox's changelog.

    v4.1.1 (2022-12-29)

    Bugfixes - 4.1.1

    - Fix logging error with emoji in git branch name. (:issue:`2768`)
    

    Improved Documentation - 4.1.1

    • Add faq entry about re-use of environments - by :user:jugmac00. (:issue:2788)

    v4.1.0 (2022-12-29)

    Features - 4.1.0

    - ``-f`` can be used multiple times and on hyphenated factors (e.g. ``-f py311-django -f py39``) - by :user:`sirosen`. (:issue:`2766`)
    

    Improved Documentation - 4.1.0

    • Fix a grammatical typo in docs/user_guide.rst. (:issue:2787)

    v4.0.19 (2022-12-28)

    Bugfixes - 4.0.19

    - Create temp_dir if not exists - by :user:`q0w`. (:issue:`2770`)
    

    v4.0.18 (2022-12-26)

    Bugfixes - 4.0.18

    • Strip leading and trailing whitespace when parsing elements in requirement files - by :user:gaborbernat. (:issue:2773)

    v4.0.17 (2022-12-25)

    Features - 4.0.17

    - Suppress a report output when verbosity = 0. (:issue:`2697`)
    

    Bugfixes - 4.0.17

    • Fix --sdistonly behaviour. (:issue:2653)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • Bump isort from 5.11.2 to 5.11.4

    Bump isort from 5.11.2 to 5.11.4

    Bumps isort from 5.11.2 to 5.11.4.

    Release notes

    Sourced from isort's releases.

    5.11.4

    Changes

    :package: Dependencies

    5.11.3

    Changes

    :beetle: Fixes

    :construction_worker: Continuous Integration

    v5.11.3

    Changes

    :beetle: Fixes

    :construction_worker: Continuous Integration

    Changelog

    Sourced from isort's changelog.

    5.11.4 December 21 2022

    5.11.3 December 16 2022

    Commits
    • 98390f5 Merge pull request #2059 from PyCQA/version/5.11.4
    • df69a05 Bump version 5.11.4
    • f9add58 Merge pull request #2058 from PyCQA/deps/poetry-1.3.1
    • 36caa91 Bump Poetry 1.3.1
    • 3c2e2d0 Merge pull request #1978 from mgorny/toml-test
    • 45d6abd Remove obsolete toml import from the test suite
    • 3020e0b Merge pull request #2057 from mgorny/poetry-install
    • a6fdbfd Stop installing documentation files to top-level site-packages
    • ff306f8 Fix tag template to match old standard
    • 227c4ae Merge pull request #2052 from hugovk/main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • Bump autoflake from 1.7.8 to 2.0.0

    Bump autoflake from 1.7.8 to 2.0.0

    Bumps autoflake from 1.7.8 to 2.0.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • Bump flake8 from 5.0.4 to 6.0.0

    Bump flake8 from 5.0.4 to 6.0.0

    Bumps flake8 from 5.0.4 to 6.0.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • Bump m2r2 from 0.3.2 to 0.3.3

    Bump m2r2 from 0.3.2 to 0.3.3

    Bumps m2r2 from 0.3.2 to 0.3.3.

    Changelog

    Sourced from m2r2's changelog.

    Version 0.3.3 (2022-08-11)

    • Drop support for all python versions prior to 3.7
    • Upgrade to docutils 0.19
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 1
  • cannot create floating labels

    cannot create floating labels

    It seems impossible to create a bootstrap form with floating labels as shown below because:

    1. when using the bootstrap_field tag only, the label is rendered before the input tag, this breaks floating labels
    2. when using separate bootstrap_field and bootstrap_label tags, the input field is wrapped in a div that breaks floating labels.
    <div class="form-floating mb-3">
      <input type="email" class="form-control" id="floatingInput" placeholder="Username">
      <label for="floatingInput">Email address</label>
    </div>
    <div class="form-floating">
      <input type="password" class="form-control" id="floatingPassword" placeholder="Password">
      <label for="floatingPassword">Password</label>
    </div>
    
    opened by hayate 2
Bootstrap 4 integration with Django.

django-bootstrap 4 Bootstrap 4 integration for Django. Goal The goal of this project is to seamlessly blend Django and Bootstrap 4. Requirements Pytho

Zostera B.V. 980 Dec 29, 2022
Bootstrap 3 integration with Django.

django-bootstrap3 Bootstrap 3 integration for Django. Goal The goal of this project is to seamlessly blend Django and Bootstrap 3. Want to use Bootstr

Zostera B.V. 2.3k Jan 2, 2023
Awesome Django Markdown Editor, supported for Bootstrap & Semantic-UI

martor Martor is a Markdown Editor plugin for Django, supported for Bootstrap & Semantic-UI. Features Live Preview Integrated with Ace Editor Supporte

null 659 Jan 4, 2023
Twitter Bootstrap for Django Form

Django bootstrap form Twitter Bootstrap for Django Form. A simple Django template tag to work with Bootstrap Installation Install django-bootstrap-for

tzangms 557 Oct 19, 2022
A simple porfolio with Django, Bootstrap and Sqlite3

Django Portofolio Example this is a basic portfolio in dark mode Installation git clone https://github.com/FaztWeb/django-portfolio-simple.git cd djan

Fazt Web 16 Sep 26, 2022
A simple polling app made in Django and Bootstrap

DjangoPolls A Simple Polling app made with Django Instructions Make sure you have Python installed Step 1. Open a terminal Step 2. Paste the given cod

Aditya Priyadarshi 1 Nov 10, 2021
Strawberry-django-plus - Enhanced Strawberry GraphQL integration with Django

strawberry-django-plus Enhanced Strawberry integration with Django. Built on top

BLB Ventures 138 Dec 28, 2022
Django URL Shortener is a Django app to to include URL Shortening feature in your Django Project

Django URL Shortener Django URL Shortener is a Django app to to include URL Shortening feature in your Django Project Install this package to your Dja

Rishav Sinha 4 Nov 18, 2021
Django application and library for importing and exporting data with admin integration.

django-import-export django-import-export is a Django application and library for importing and exporting data with included admin integration. Featur

null 2.6k Dec 26, 2022
Django admin CKEditor integration.

Django CKEditor NOTICE: django-ckeditor 5 has backward incompatible code moves against 4.5.1. File upload support has been moved to ckeditor_uploader.

null 2.2k Jan 2, 2023
A simple app that provides django integration for RQ (Redis Queue)

Django-RQ Django integration with RQ, a Redis based Python queuing library. Django-RQ is a simple app that allows you to configure your queues in djan

RQ 1.6k Jan 6, 2023
Plug and play continuous integration with django and jenkins

django-jenkins Plug and play continuous integration with Django and Jenkins Installation From PyPI: $ pip install django-jenkins Or by downloading th

Mikhail Podgurskiy 941 Oct 22, 2022
A django integration for huey task queue that supports multi queue management

django-huey This package is an extension of huey contrib djhuey package that allows users to manage multiple queues. Installation Using pip package ma

GAIA Software 32 Nov 26, 2022
Django admin CKEditor integration.

Django CKEditor NOTICE: django-ckeditor 5 has backward incompatible code moves against 4.5.1. File upload support has been moved to ckeditor_uploader.

null 2.2k Dec 31, 2022
TinyMCE integration for Django

django-tinymce django-tinymce is a Django application that contains a widget to render a form field as a TinyMCE editor. Quickstart Install django-tin

Jazzband 1.1k Dec 26, 2022
Django + Next.js integration

Django Next.js Django + Next.js integration From a comment on StackOverflow: Run 2 ports on the same server. One for django (public facing) and one fo

Quera 162 Jan 3, 2023
Meta package to combine turbo-django and stimulus-django

Hotwire + Django This repository aims to help you integrate Hotwire with Django ?? Inspiration might be taken from @hotwired/hotwire-rails. We are sti

Hotwire for Django 31 Aug 9, 2022
django-reversion is an extension to the Django web framework that provides version control for model instances.

django-reversion django-reversion is an extension to the Django web framework that provides version control for model instances. Requirements Python 3

Dave Hall 2.8k Jan 2, 2023
Django-environ allows you to utilize 12factor inspired environment variables to configure your Django application.

Django-environ django-environ allows you to use Twelve-factor methodology to configure your Django application with environment variables. import envi

Daniele Faraglia 2.7k Jan 7, 2023