Bootstrap 3 integration with Django.

Overview

django-bootstrap3

Build 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.

Want to use Bootstrap 4 in Django? See https://github.com/zostera/django-bootstrap4.

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.md for a list of contributors.

Issues
  • 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 sphinx from 4.5.0 to 5.0.1

    Bump sphinx from 4.5.0 to 5.0.1

    Bumps sphinx from 4.5.0 to 5.0.1.

    Release notes

    Sourced from sphinx's releases.

    v5.0.1

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v5.0.0b1

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    Changelog

    Sourced from sphinx's changelog.

    Release 5.0.1 (released Jun 03, 2022)

    Bugs fixed

    • #10498: gettext: TypeError is raised when sorting warning messages if a node has no line number
    • #10493: html theme: :rst:dir:topic directive is rendered incorrectly with docutils-0.18
    • #10495: IndexError is raised for a :rst:role:kbd role having a separator

    Release 5.0.0 (released May 30, 2022)

    Dependencies

    5.0.0 b1

    • #10164: Support Docutils 0.18_. Patch by Adam Turner.

    .. _Docutils 0.18: https://docutils.sourceforge.io/RELEASE-NOTES.html#release-0-18-2021-10-26

    Incompatible changes

    5.0.0 b1

    • #10031: autosummary: sphinx.ext.autosummary.import_by_name() now raises ImportExceptionGroup instead of ImportError when it failed to import target object. Please handle the exception if your extension uses the function to import Python object. As a workaround, you can disable the behavior via grouped_exception=False keyword argument until v7.0.
    • #9962: texinfo: Customizing styles of emphasized text via @definfoenclose command was not supported because the command was deprecated since texinfo 6.8
    • #2068: :confval:intersphinx_disabled_reftypes has changed default value from an empty list to ['std:doc'] as avoid too surprising silent intersphinx resolutions. To migrate: either add an explicit inventory name to the references intersphinx should resolve, or explicitly set the value of this configuration variable to an empty list.
    • #10197: html theme: Reduce body_min_width setting in basic theme to 360px
    • #9999: LaTeX: separate terms from their definitions by a CR (refs: #9985)
    • #10062: Change the default language to 'en' if any language is not set in conf.py

    5.0.0 final

    • #10474: :confval:language does not accept None as it value. The default

    ... (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 twine from 3.8.0 to 4.0.1

    Bump twine from 3.8.0 to 4.0.1

    Bumps twine from 3.8.0 to 4.0.1.

    Release notes

    Sourced from twine's releases.

    4.0.0

    https://pypi.org/project/twine/4.0.0/

    Changelog

    Changelog

    Sourced from twine's changelog.

    Twine 4.0.1 (2022-06-01)

    Bugfixes ^^^^^^^^

    • Improve logging when keyring fails. ([#890](https://github.com/pypa/twine/issues/890) <https://github.com/pypa/twine/issues/890>_)
    • Reconfgure root logger to show all log messages. ([#896](https://github.com/pypa/twine/issues/896) <https://github.com/pypa/twine/issues/896>_)

    Twine 4.0.0 (2022-03-31)

    Features ^^^^^^^^

    • Drop support for Python 3.6. ([#869](https://github.com/pypa/twine/issues/869) <https://github.com/pypa/twine/issues/869>_)
    • Use Rich to add color to upload output. ([#851](https://github.com/pypa/twine/issues/851) <https://github.com/pypa/twine/issues/851>_)
    • Use Rich to add color to check output. ([#874](https://github.com/pypa/twine/issues/874) <https://github.com/pypa/twine/issues/874>_)
    • Use Rich instead of tqdm for upload progress bar. ([#877](https://github.com/pypa/twine/issues/877) <https://github.com/pypa/twine/issues/877>_)

    Bugfixes ^^^^^^^^

    • Remove Twine's dependencies from the User-Agent header when uploading. ([#871](https://github.com/pypa/twine/issues/871) <https://github.com/pypa/twine/issues/871>_)
    • Improve detection of disabled BLAKE2 hashing due to FIPS mode. ([#879](https://github.com/pypa/twine/issues/879) <https://github.com/pypa/twine/issues/879>_)
    • Restore warning for missing long_description. ([#887](https://github.com/pypa/twine/issues/887) <https://github.com/pypa/twine/issues/887>_)
    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 setuptools from 60.10.0 to 62.3.2

    Bump setuptools from 60.10.0 to 62.3.2

    Bumps setuptools from 60.10.0 to 62.3.2.

    Changelog

    Sourced from setuptools's changelog.

    v62.3.2

    Misc ^^^^

    • #3328: Include a first line summary to some of the existing multi-line warnings.

    v62.3.1

    Misc ^^^^

    • #3320: Fixed typo which causes namespace_packages to raise an error instead of warning.

    v62.3.0

    Deprecations ^^^^^^^^^^^^

    • #3262: Formally added deprecation messages for namespace_packages. The methodology that uses pkg_resources and namespace_packages for creating namespaces was already discouraged by the :doc:setuptools docs </userguide/package_discovery> and the :doc:Python Packaging User Guide <PyPUG:guides/packaging-namespace-packages>, therefore this change just make the deprecation more official. Users can consider migrating to native/implicit namespaces (as introduced in :pep:420).

    • #3308: Relying on include_package_data to ensure sub-packages are automatically added to the build wheel distribution (as "data") is now considered a deprecated practice.

      This behaviour was controversial and caused inconsistencies (#3260).

      Instead, projects are encouraged to properly configure packages or use discovery tools. General information can be found in :doc:userguide/package_discovery.

    Changes ^^^^^^^

    • #1806: Allowed recursive globs (**) in package_data. -- by :user:nullableVoidPtr
    • #3206: Fixed behaviour when both install_requires (in setup.py) and dependencies (in pyproject.toml) are specified. The configuration in pyproject.toml will take precedence over setup.py (in accordance with PEP 621). A warning was added to inform users.

    ... (truncated)

    Commits
    • 1e5e8df Bump version: 62.3.1 → 62.3.2
    • 344512a Add one-line summary to some warnings (#3328)
    • 3eba1cb Update setuptools/command/build_py.py
    • 531cea6 Add news fragment
    • c255ed8 Improve warning message for _InvalidFile
    • 81c944b Improve warning message for dist_info._version
    • 97b4f2d Improve warning message for _WouldIgnoreField
    • 89173d2 Improve warning message for _IncludePackageDataAbuse
    • b416443 Bump version: 62.3.0 → 62.3.1
    • 287040f Add news fragment
    • 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 pur from 5.4.3 to 7.0.0

    Bump pur from 5.4.3 to 7.0.0

    Bumps pur from 5.4.3 to 7.0.0.

    Release notes

    Sourced from pur's releases.

    7.0.0

    To install this release from pypi:

    pip install -I pur==7.0.0
    

    6.1.0

    To install this release from pypi:

    pip install -I pur==6.1.0
    

    6.0.1

    To install this release from pypi:

    pip install -I pur==6.0.1
    

    6.0.0

    To install this release from pypi:

    pip install -I pur==6.0.0
    
    Changelog

    Sourced from pur's changelog.

    7.0.0 (2022-05-09) ++++++++++++++++++

    • Exit with status zero when no packages updated, even with --nonzero-exit-code. [#27](https://github.com/alanhamlett/pip-update-requirements/issues/27) <https://github.com/alanhamlett/pip-update-requirements/issues/27>_

    6.1.0 (2022-04-05) ++++++++++++++++++

    • Add support for Python 3.10.

    6.0.1 (2022-01-24) ++++++++++++++++++

    • Add back public update_requirements export. [#44](https://github.com/alanhamlett/pip-update-requirements/issues/44) <https://github.com/alanhamlett/pip-update-requirements/issues/44>_

    6.0.0 (2022-01-23) ++++++++++++++++++

    • Upgrade pip to version 21.3.1, and drop support for Python 2. [#43](https://github.com/alanhamlett/pip-update-requirements/issues/43) <https://github.com/alanhamlett/pip-update-requirements/pull/43>_
    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
  • 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
  • Upgrade importlib_metadata

    Upgrade importlib_metadata

    This library currently enforces importlib_metadata<3 for Python<3.8. This causes conflicts for us, since other libraries such as markdown start enforcing importlib_metadata>4.4 to get Python-3.10-like behaviour.

    Is there a specific reason this version is enforced to be <3?

    refs https://github.com/pretix/pretix/pull/2329

    opened by raphaelm 0
The best way to have DRY Django forms. The app provides a tag and filter that lets you quickly render forms in a div format while providing an enormous amount of capability to configure and control the rendered HTML.

django-crispy-forms The best way to have Django DRY forms. Build programmatic reusable layouts out of components, having full control of the rendered

null 4.5k Jun 9, 2022
A platform independent django form serializer

django-remote-forms A package that allows you to serialize django forms, including fields and widgets into Python dictionary for easy conversion into

WiserTogether, Inc. 216 May 10, 2022
The best way to have DRY Django forms. The app provides a tag and filter that lets you quickly render forms in a div format while providing an enormous amount of capability to configure and control the rendered HTML.

django-crispy-forms The best way to have Django DRY forms. Build programmatic reusable layouts out of components, having full control of the rendered

null 4.5k May 29, 2022
A set of high-level abstractions for Django forms

django-formtools Django's "formtools" is a set of high-level abstractions for Django forms. Currently for form previews and multi-step forms. This cod

Jazzband 578 May 21, 2022
A fresh approach to autocomplete implementations, specially for Django. Status: v3 stable, 2.x.x stable, 1.x.x deprecated. Please DO regularely ping us with your link at #yourlabs IRC channel

Features Python 2.7, 3.4, Django 2.0+ support (Django 1.11 (LTS), is supported until django-autocomplete-light-3.2.10), Django (multiple) choice suppo

YourLabs 1.6k May 12, 2022
Fully Automated YouTube Channel ▶️with Added Extra Features.

Fully Automated Youtube Channel ▒█▀▀█ █▀▀█ ▀▀█▀▀ ▀▀█▀▀ █░░█ █▀▀▄ █▀▀ █▀▀█ ▒█▀▀▄ █░░█ ░░█░░ ░▒█░░ █░░█ █▀▀▄ █▀▀ █▄▄▀ ▒█▄▄█ ▀▀▀▀ ░░▀░░ ░▒█░░ ░▀▀▀ ▀▀▀░

sam-sepiol 169 Jun 4, 2022
A guide for using Bootstrap 5 classes in Dash Bootstrap Components V1

dash-bootstrap-cheatsheet This handy interactive cheatsheet makes it easy to use the Bootstrap 5 classes with your Dash app made with the latest versi

null 5 May 28, 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 Jun 3, 2022
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. 960 May 30, 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 May 30, 2022
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. 960 May 30, 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 Jun 3, 2022
Django Webpack starter template for using Webpack 5 with Django 3.1 & Bootstrap 4. Yes, it can hot-reload.

Django Webpack Starter Hello fellow human. The repo uses Python 3.9.* Django 3.1.* Webpack 5.4.* Bootstrap 4.5.* Pipenv If you have any questions twe

Ganesh Khade 54 Jun 3, 2022
Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap.

Xadmin Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap. Liv

差沙 4.7k Jun 1, 2022
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 578 Jun 4, 2022
A Django admin theme using Twitter Bootstrap. It doesn't need any kind of modification on your side, just add it to the installed apps.

django-admin-bootstrapped A Django admin theme using Bootstrap. It doesn't need any kind of modification on your side, just add it to the installed ap

null 1.6k Jun 2, 2022
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 578 Jun 4, 2022
A Django admin theme using Twitter Bootstrap. It doesn't need any kind of modification on your side, just add it to the installed apps.

django-admin-bootstrapped A Django admin theme using Bootstrap. It doesn't need any kind of modification on your side, just add it to the installed ap

null 1.6k Jun 2, 2022
Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap.

Xadmin Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap. Liv

差沙 4.7k Jun 9, 2022
A cool, modern and responsive django admin application based on bootstrap 5

django-baton A cool, modern and responsive django admin application based on bootstrap 5 Documentation: readthedocs Live Demo Now you can try django-b

Otto srl 587 Jun 4, 2022
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 559 Apr 15, 2022
A server shell for you to play with Powered by Django + Nginx + Postgres + Bootstrap + Celery.

A server shell for you to play with Powered by Django + Nginx + Postgres + Bootstrap + Celery.

Mengting Song 1 Jan 10, 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 11 Dec 4, 2021
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
Complete Two-Factor Authentication for Django providing the easiest integration into most Django projects.

Django Two-Factor Authentication Complete Two-Factor Authentication for Django. Built on top of the one-time password framework django-otp and Django'

Bouke Haarsma 1.2k May 31, 2022
Strawberry-django-plus - Enhanced Strawberry GraphQL integration with Django

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

BLB Ventures 64 May 26, 2022
Pool funds to bootstrap a Uniswap pair

Seed liquidity A contract to pool funds which are then used to boostrap a new Uniswap liquidity pair. Specification A new SeedLiquidity contract is de

null 58 May 23, 2022
A flask template with Bootstrap 4, asset bundling+minification with webpack, starter templates, and registration/authentication. For use with cookiecutter.

cookiecutter-flask A Flask template for cookiecutter. (Supports Python ≥ 3.6) See this repo for an example project generated from the most recent vers

null 4.1k Jun 9, 2022