mirror of
https://github.com/cookiecutter/cookiecutter-django.git
synced 2024-11-12 04:38:07 +03:00
Merge commit '6f51b05b6ea86ac9f7cc42a130c3a1f27ae8ea02'
This commit is contained in:
commit
f0efe03afc
|
@ -53,6 +53,7 @@ Listed in alphabetical order.
|
||||||
Andy Rose
|
Andy Rose
|
||||||
Anna Callahan `@jazztpt`_
|
Anna Callahan `@jazztpt`_
|
||||||
Antonia Blair `@antoniablair`_ @antoniablairart
|
Antonia Blair `@antoniablair`_ @antoniablairart
|
||||||
|
Arcuri Davide `@dadokkio`_
|
||||||
Areski Belaid `@areski`_
|
Areski Belaid `@areski`_
|
||||||
Ashley Camba
|
Ashley Camba
|
||||||
Barclay Gauld `@yunti`_
|
Barclay Gauld `@yunti`_
|
||||||
|
@ -67,6 +68,7 @@ Listed in alphabetical order.
|
||||||
Burhan Khalid `@burhan`_ @burhan
|
Burhan Khalid `@burhan`_ @burhan
|
||||||
Catherine Devlin `@catherinedevlin`_
|
Catherine Devlin `@catherinedevlin`_
|
||||||
Cédric Gaspoz `@cgaspoz`_
|
Cédric Gaspoz `@cgaspoz`_
|
||||||
|
Charlie Smith `@chuckus`_
|
||||||
Chris Curvey `@ccurvey`_
|
Chris Curvey `@ccurvey`_
|
||||||
Chris Franklin
|
Chris Franklin
|
||||||
Chris Franklin `@hairychris`_
|
Chris Franklin `@hairychris`_
|
||||||
|
@ -127,6 +129,7 @@ Listed in alphabetical order.
|
||||||
Peter Bittner `@bittner`_
|
Peter Bittner `@bittner`_
|
||||||
Raphael Pierzina `@hackebrot`_
|
Raphael Pierzina `@hackebrot`_
|
||||||
Raony Guimarães Corrêa `@raonyguimaraes`_
|
Raony Guimarães Corrêa `@raonyguimaraes`_
|
||||||
|
Reggie Riser `@reggieriser`_
|
||||||
René Muhl `@rm--`_
|
René Muhl `@rm--`_
|
||||||
Roman Afanaskin `@siauPatrick`_
|
Roman Afanaskin `@siauPatrick`_
|
||||||
Roman Osipenko `@romanosipenko`_
|
Roman Osipenko `@romanosipenko`_
|
||||||
|
@ -177,6 +180,7 @@ Listed in alphabetical order.
|
||||||
.. _@cgaspoz: https://github.com/cgaspoz
|
.. _@cgaspoz: https://github.com/cgaspoz
|
||||||
.. _@chrisdev: https://github.com/chrisdev
|
.. _@chrisdev: https://github.com/chrisdev
|
||||||
.. _@ChrisPappalardo: https://github.com/ChrisPappalardo
|
.. _@ChrisPappalardo: https://github.com/ChrisPappalardo
|
||||||
|
.. _@chuckus: https://github.com/chuckus
|
||||||
.. _@Collederas: https://github.com/Collederas
|
.. _@Collederas: https://github.com/Collederas
|
||||||
.. _@ddiazpinto: https://github.com/ddiazpinto
|
.. _@ddiazpinto: https://github.com/ddiazpinto
|
||||||
.. _@dezoito: https://github.com/dezoito
|
.. _@dezoito: https://github.com/dezoito
|
||||||
|
@ -219,6 +223,7 @@ Listed in alphabetical order.
|
||||||
.. _@oubiga: https://github.com/oubiga
|
.. _@oubiga: https://github.com/oubiga
|
||||||
.. _@parbhat: https://github.com/parbhat
|
.. _@parbhat: https://github.com/parbhat
|
||||||
.. _@raonyguimaraes: https://github.com/raonyguimaraes
|
.. _@raonyguimaraes: https://github.com/raonyguimaraes
|
||||||
|
.. _@reggieriser: https://github.com/reggieriser
|
||||||
.. _@rm--: https://github.com/rm--
|
.. _@rm--: https://github.com/rm--
|
||||||
.. _@romanosipenko: https://github.com/romanosipenko
|
.. _@romanosipenko: https://github.com/romanosipenko
|
||||||
.. _@shireenrao: https://github.com/shireenrao
|
.. _@shireenrao: https://github.com/shireenrao
|
||||||
|
|
13
README.rst
13
README.rst
|
@ -12,13 +12,16 @@ Cookiecutter Django
|
||||||
.. image:: https://badges.gitter.im/Join Chat.svg
|
.. image:: https://badges.gitter.im/Join Chat.svg
|
||||||
:target: https://gitter.im/pydanny/cookiecutter-django?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
|
:target: https://gitter.im/pydanny/cookiecutter-django?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
|
||||||
|
|
||||||
Powered by Cookiecutter_, Cookiecutter Django is a framework for jumpstarting production-ready Django projects quickly.
|
Powered by Cookiecutter_, Cookiecutter Django is a framework for jumpstarting
|
||||||
|
production-ready Django projects quickly.
|
||||||
|
|
||||||
* Documentation: https://cookiecutter-django.readthedocs.io/en/latest/
|
* Documentation: https://cookiecutter-django.readthedocs.io/en/latest/
|
||||||
* See Troubleshooting_ for common errors and obstacles
|
* See Troubleshooting_ for common errors and obstacles
|
||||||
* If you have problems with Cookiecutter Django, please open issues_ don't send emails to the maintainers.
|
* If you have problems with Cookiecutter Django, please open issues_ don't send
|
||||||
* Need quick professional paid support? Contact `support@cookiecutter.io`_. This includes configuring your servers,
|
emails to the maintainers.
|
||||||
fixing bugs, reviewing your code and everything in between.
|
* Need quick professional paid support? Contact `support@cookiecutter.io`_.
|
||||||
|
This includes configuring your servers, fixing bugs, reviewing your code and
|
||||||
|
everything in between.
|
||||||
|
|
||||||
.. _cookiecutter: https://github.com/audreyr/cookiecutter
|
.. _cookiecutter: https://github.com/audreyr/cookiecutter
|
||||||
|
|
||||||
|
@ -34,7 +37,7 @@ Features
|
||||||
* For Django 1.10
|
* For Django 1.10
|
||||||
* Works with Python 3.4.x or 3.5.x. Python 3.6 is experimental
|
* Works with Python 3.4.x or 3.5.x. Python 3.6 is experimental
|
||||||
* Renders Django projects with 100% starting test coverage
|
* Renders Django projects with 100% starting test coverage
|
||||||
* Twitter Bootstrap_ v4.0.0 - alpha 6 (`maintained Foundation fork`_ also available)
|
* Twitter Bootstrap_ v4.0.0 - beta 1 (`maintained Foundation fork`_ also available)
|
||||||
* 12-Factor_ based settings via django-environ_
|
* 12-Factor_ based settings via django-environ_
|
||||||
* Secure by default. We believe in SSL.
|
* Secure by default. We believe in SSL.
|
||||||
* Optimized development and production settings
|
* Optimized development and production settings
|
||||||
|
|
|
@ -30,14 +30,14 @@ The config for pylint is located in .pylintrc. It specifies:
|
||||||
* Disable linting messages for missing docstring and invalid name
|
* Disable linting messages for missing docstring and invalid name
|
||||||
* max-parents=13
|
* max-parents=13
|
||||||
|
|
||||||
pep8
|
pycodestyle
|
||||||
-----
|
-----
|
||||||
|
|
||||||
This is included in flake8's checks, but you can also run it separately to see a more detailed report:
|
This is included in flake8's checks, but you can also run it separately to see a more detailed report:
|
||||||
|
|
||||||
$ pep8 <python files that you wish to lint>
|
$ pycodestyle <python files that you wish to lint>
|
||||||
|
|
||||||
The config for pep8 is located in setup.cfg. It specifies:
|
The config for pycodestyle is located in setup.cfg. It specifies:
|
||||||
|
|
||||||
* Set max line length to 120 chars
|
* Set max line length to 120 chars
|
||||||
* Exclude ``.tox,.git,*/migrations/*,*/static/CACHE/*,docs,node_modules``
|
* Exclude ``.tox,.git,*/migrations/*,*/static/CACHE/*,docs,node_modules``
|
||||||
|
|
|
@ -4,8 +4,8 @@ sh==1.12.14
|
||||||
binaryornot==0.4.4
|
binaryornot==0.4.4
|
||||||
|
|
||||||
# Testing
|
# Testing
|
||||||
pytest==3.2.1
|
pytest==3.2.3
|
||||||
pep8==1.7.0
|
pycodestyle==2.3.1
|
||||||
pyflakes==1.6.0
|
pyflakes==1.6.0
|
||||||
tox==2.7.0
|
tox==2.9.1
|
||||||
pytest-cookies==0.2.0
|
pytest-cookies==0.2.0
|
||||||
|
|
6
{{cookiecutter.project_slug}}/.gitignore
vendored
6
{{cookiecutter.project_slug}}/.gitignore
vendored
|
@ -361,3 +361,9 @@ mailhog
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{{ cookiecutter.project_slug }}/media/
|
{{ cookiecutter.project_slug }}/media/
|
||||||
|
|
||||||
|
{% if cookiecutter.use_docker == 'y' -%}
|
||||||
|
# Added to maintain local compose files which are ignored by something above.
|
||||||
|
# See issue https://github.com/pydanny/cookiecutter-django/issues/1321
|
||||||
|
!/compose/local/
|
||||||
|
{% endif %}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
<env name="DJANGO_SETTINGS_MODULE" value="config.settings.local" />
|
<env name="DJANGO_SETTINGS_MODULE" value="config.settings.local" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="docker-compose://[$PROJECT_DIR$/dev.yml]:pycharm/python" />
|
<option name="SDK_HOME" value="docker-compose://[$PROJECT_DIR$/local.yml]:pycharm/python" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
<option name="IS_MODULE_SDK" value="false" />
|
<option name="IS_MODULE_SDK" value="false" />
|
||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
<env name="DJANGO_SETTINGS_MODULE" value="config.settings.local" />
|
<env name="DJANGO_SETTINGS_MODULE" value="config.settings.local" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="docker-compose://[$PROJECT_DIR$/dev.yml]:django/python" />
|
<option name="SDK_HOME" value="docker-compose://[$PROJECT_DIR$/local.yml]:django/python" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
<option name="IS_MODULE_SDK" value="false" />
|
<option name="IS_MODULE_SDK" value="false" />
|
||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
<env name="DJANGO_SETTINGS_MODULE" value="config.settings.local" />
|
<env name="DJANGO_SETTINGS_MODULE" value="config.settings.local" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="docker-compose://[$PROJECT_DIR$/dev.yml]:django/python" />
|
<option name="SDK_HOME" value="docker-compose://[$PROJECT_DIR$/local.yml]:django/python" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
<option name="IS_MODULE_SDK" value="false" />
|
<option name="IS_MODULE_SDK" value="false" />
|
||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
<env name="DJANGO_SETTINGS_MODULE" value="config.settings.test" />
|
<env name="DJANGO_SETTINGS_MODULE" value="config.settings.test" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="docker-compose://[$PROJECT_DIR$/dev.yml]:pycharm/python" />
|
<option name="SDK_HOME" value="docker-compose://[$PROJECT_DIR$/local.yml]:pycharm/python" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
<option name="IS_MODULE_SDK" value="true" />
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
<env name="DJANGO_SETTINGS_MODULE" value="config.settings.test" />
|
<env name="DJANGO_SETTINGS_MODULE" value="config.settings.test" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="docker-compose://[$PROJECT_DIR$/dev.yml]:pycharm/python" />
|
<option name="SDK_HOME" value="docker-compose://[$PROJECT_DIR$/local.yml]:pycharm/python" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
<option name="IS_MODULE_SDK" value="true" />
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
<env name="DJANGO_SETTINGS_MODULE" value="config.settings.test" />
|
<env name="DJANGO_SETTINGS_MODULE" value="config.settings.test" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="docker-compose://[$PROJECT_DIR$/dev.yml]:pycharm/python" />
|
<option name="SDK_HOME" value="docker-compose://[$PROJECT_DIR$/local.yml]:pycharm/python" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
<option name="IS_MODULE_SDK" value="true" />
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
<env name="DJANGO_SETTINGS_MODULE" value="config.settings.test" />
|
<env name="DJANGO_SETTINGS_MODULE" value="config.settings.test" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="docker-compose://[$PROJECT_DIR$/dev.yml]:pycharm/python" />
|
<option name="SDK_HOME" value="docker-compose://[$PROJECT_DIR$/local.yml]:pycharm/python" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
<option name="IS_MODULE_SDK" value="true" />
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
<env name="DJANGO_SETTINGS_MODULE" value="config.settings.test" />
|
<env name="DJANGO_SETTINGS_MODULE" value="config.settings.test" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="docker-compose://[$PROJECT_DIR$/dev.yml]:pycharm/python" />
|
<option name="SDK_HOME" value="docker-compose://[$PROJECT_DIR$/local.yml]:pycharm/python" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
<option name="IS_MODULE_SDK" value="true" />
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
FROM abiosoft/caddy:0.10.6
|
|
||||||
COPY Caddyfile /etc/Caddyfile
|
|
|
@ -1,29 +0,0 @@
|
||||||
FROM python:3.5
|
|
||||||
|
|
||||||
ENV PYTHONUNBUFFERED 1
|
|
||||||
|
|
||||||
RUN groupadd -r django \
|
|
||||||
&& useradd -r -g django django
|
|
||||||
|
|
||||||
# Requirements have to be pulled and installed here, otherwise caching won't work
|
|
||||||
COPY ./requirements /requirements
|
|
||||||
RUN pip install --no-cache-dir -r /requirements/production.txt \
|
|
||||||
&& rm -rf /requirements
|
|
||||||
|
|
||||||
COPY ./compose/django/gunicorn.sh ./compose/django/entrypoint.sh /
|
|
||||||
RUN sed -i 's/\r//' /entrypoint.sh \
|
|
||||||
&& sed -i 's/\r//' /gunicorn.sh \
|
|
||||||
&& chmod +x /entrypoint.sh \
|
|
||||||
&& chown django /entrypoint.sh \
|
|
||||||
&& chmod +x /gunicorn.sh \
|
|
||||||
&& chown django /gunicorn.sh
|
|
||||||
|
|
||||||
COPY . /app
|
|
||||||
|
|
||||||
RUN chown -R django /app
|
|
||||||
|
|
||||||
USER django
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
|
|
@ -1,26 +0,0 @@
|
||||||
FROM python:3.5
|
|
||||||
ENV PYTHONUNBUFFERED 1
|
|
||||||
|
|
||||||
# Requirements have to be pulled and installed here, otherwise caching won't work
|
|
||||||
COPY ./requirements /requirements
|
|
||||||
RUN pip install -r /requirements/local.txt
|
|
||||||
|
|
||||||
COPY ./compose/django/entrypoint.sh /entrypoint.sh
|
|
||||||
RUN sed -i 's/\r//' /entrypoint.sh
|
|
||||||
RUN chmod +x /entrypoint.sh
|
|
||||||
|
|
||||||
COPY ./compose/django/start-dev.sh /start-dev.sh
|
|
||||||
RUN sed -i 's/\r//' /start-dev.sh
|
|
||||||
RUN chmod +x /start-dev.sh
|
|
||||||
|
|
||||||
COPY ./compose/django/celery/worker/start-dev.sh /start-celeryworker-dev.sh
|
|
||||||
RUN sed -i 's/\r//' /start-celeryworker-dev.sh
|
|
||||||
RUN chmod +x /start-celeryworker-dev.sh
|
|
||||||
|
|
||||||
COPY ./compose/django/celery/beat/start-dev.sh /start-celerybeat-dev.sh
|
|
||||||
RUN sed -i 's/\r//' /start-celerybeat-dev.sh
|
|
||||||
RUN chmod +x /start-celerybeat-dev.sh
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
|
|
@ -1,3 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
python manage.py migrate
|
|
||||||
python manage.py runserver_plus 0.0.0.0:8000
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
FROM python:3.5
|
||||||
|
|
||||||
|
ENV PYTHONUNBUFFERED 1
|
||||||
|
|
||||||
|
# Requirements have to be pulled and installed here, otherwise caching won't work
|
||||||
|
COPY ./requirements /requirements
|
||||||
|
RUN pip install -r /requirements/local.txt
|
||||||
|
|
||||||
|
COPY ./compose/production/django/entrypoint.sh /entrypoint.sh
|
||||||
|
RUN sed -i 's/\r//' /entrypoint.sh
|
||||||
|
RUN chmod +x /entrypoint.sh
|
||||||
|
|
||||||
|
COPY ./compose/local/django/start.sh /start.sh
|
||||||
|
RUN sed -i 's/\r//' /start.sh
|
||||||
|
RUN chmod +x /start.sh
|
||||||
|
|
||||||
|
COPY ./compose/local/django/celery/worker/start.sh /start-celeryworker.sh
|
||||||
|
RUN sed -i 's/\r//' /start-celeryworker.sh
|
||||||
|
RUN chmod +x /start-celeryworker.sh
|
||||||
|
|
||||||
|
COPY ./compose/local/django/celery/beat/start.sh /start-celerybeat.sh
|
||||||
|
RUN sed -i 's/\r//' /start-celerybeat.sh
|
||||||
|
RUN chmod +x /start-celerybeat.sh
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
ENTRYPOINT ["/entrypoint.sh"]
|
|
@ -1,8 +1,10 @@
|
||||||
#!/bin/sh
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -o errexit
|
set -o errexit
|
||||||
|
set -o pipefail
|
||||||
set -o nounset
|
set -o nounset
|
||||||
set -o xtrace
|
set -o xtrace
|
||||||
|
|
||||||
|
|
||||||
rm -f './celerybeat.pid'
|
rm -f './celerybeat.pid'
|
||||||
celery -A {{cookiecutter.project_slug}}.taskapp beat -l INFO
|
celery -A {{cookiecutter.project_slug}}.taskapp beat -l INFO
|
|
@ -1,7 +1,9 @@
|
||||||
#!/bin/sh
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -o errexit
|
set -o errexit
|
||||||
|
set -o pipefail
|
||||||
set -o nounset
|
set -o nounset
|
||||||
set -o xtrace
|
set -o xtrace
|
||||||
|
|
||||||
|
|
||||||
celery -A {{cookiecutter.project_slug}}.taskapp worker -l INFO
|
celery -A {{cookiecutter.project_slug}}.taskapp worker -l INFO
|
10
{{cookiecutter.project_slug}}/compose/local/django/start.sh
Normal file
10
{{cookiecutter.project_slug}}/compose/local/django/start.sh
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o pipefail
|
||||||
|
set -o nounset
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
|
||||||
|
python manage.py migrate
|
||||||
|
python manage.py runserver_plus 0.0.0.0:8000
|
|
@ -1,11 +0,0 @@
|
||||||
FROM postgres:{{ cookiecutter.postgresql_version }}
|
|
||||||
|
|
||||||
# add backup scripts
|
|
||||||
ADD backup.sh /usr/local/bin/backup
|
|
||||||
ADD restore.sh /usr/local/bin/restore
|
|
||||||
ADD list-backups.sh /usr/local/bin/list-backups
|
|
||||||
|
|
||||||
# make them executable
|
|
||||||
RUN chmod +x /usr/local/bin/restore
|
|
||||||
RUN chmod +x /usr/local/bin/list-backups
|
|
||||||
RUN chmod +x /usr/local/bin/backup
|
|
|
@ -1,8 +1,8 @@
|
||||||
www.{% raw %}{%DOMAIN_NAME%}{% endraw %} {
|
www.{% raw %}{$DOMAIN_NAME}{% endraw %} {
|
||||||
redir https://{{cookiecutter.domain_name}}
|
redir https://{{cookiecutter.domain_name}}
|
||||||
}
|
}
|
||||||
|
|
||||||
{% raw %}{%DOMAIN_NAME%}{% endraw %} {
|
{% raw %}{$DOMAIN_NAME}{% endraw %} {
|
||||||
proxy / django:5000 {
|
proxy / django:5000 {
|
||||||
header_upstream Host {host}
|
header_upstream Host {host}
|
||||||
header_upstream X-Real-IP {remote}
|
header_upstream X-Real-IP {remote}
|
|
@ -0,0 +1,3 @@
|
||||||
|
FROM abiosoft/caddy:0.10.6
|
||||||
|
|
||||||
|
COPY ./compose/production/caddy/Caddyfile /etc/Caddyfile
|
|
@ -0,0 +1,39 @@
|
||||||
|
FROM python:3.5
|
||||||
|
|
||||||
|
ENV PYTHONUNBUFFERED 1
|
||||||
|
|
||||||
|
RUN groupadd -r django \
|
||||||
|
&& useradd -r -g django django
|
||||||
|
|
||||||
|
# Requirements have to be pulled and installed here, otherwise caching won't work
|
||||||
|
COPY ./requirements /requirements
|
||||||
|
RUN pip install --no-cache-dir -r /requirements/production.txt \
|
||||||
|
&& rm -rf /requirements
|
||||||
|
|
||||||
|
COPY ./compose/production/django/gunicorn.sh /gunicorn.sh
|
||||||
|
RUN sed -i 's/\r//' /gunicorn.sh
|
||||||
|
RUN chmod +x /gunicorn.sh
|
||||||
|
RUN chown django /gunicorn.sh
|
||||||
|
|
||||||
|
COPY ./compose/production/django/entrypoint.sh /entrypoint.sh
|
||||||
|
RUN sed -i 's/\r//' /entrypoint.sh
|
||||||
|
RUN chmod +x /entrypoint.sh
|
||||||
|
RUN chown django /entrypoint.sh
|
||||||
|
|
||||||
|
COPY ./compose/production/django/celery/worker/start.sh /start-celeryworker.sh
|
||||||
|
RUN sed -i 's/\r//' /start-celeryworker.sh
|
||||||
|
RUN chmod +x /start-celeryworker.sh
|
||||||
|
|
||||||
|
COPY ./compose/production/django/celery/beat/start.sh /start-celerybeat.sh
|
||||||
|
RUN sed -i 's/\r//' /start-celerybeat.sh
|
||||||
|
RUN chmod +x /start-celerybeat.sh
|
||||||
|
|
||||||
|
COPY . /app
|
||||||
|
|
||||||
|
RUN chown -R django /app
|
||||||
|
|
||||||
|
USER django
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
ENTRYPOINT ["/entrypoint.sh"]
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o pipefail
|
||||||
|
set -o nounset
|
||||||
|
|
||||||
|
|
||||||
|
celery -A {{cookiecutter.project_slug}}.taskapp beat -l INFO
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o pipefail
|
||||||
|
set -o nounset
|
||||||
|
|
||||||
|
|
||||||
|
celery -A {{cookiecutter.project_slug}}.taskapp worker -l INFO
|
|
@ -1,5 +1,12 @@
|
||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
set -e
|
|
||||||
|
set -o errexit
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
# todo: turn on after #1295
|
||||||
|
# set -o nounset
|
||||||
|
|
||||||
|
|
||||||
cmd="$@"
|
cmd="$@"
|
||||||
|
|
||||||
# This entrypoint is used to play nicely with the current cookiecutter configuration.
|
# This entrypoint is used to play nicely with the current cookiecutter configuration.
|
|
@ -1,3 +1,9 @@
|
||||||
#!/bin/sh
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o pipefail
|
||||||
|
set -o nounset
|
||||||
|
|
||||||
|
|
||||||
python /app/manage.py collectstatic --noinput
|
python /app/manage.py collectstatic --noinput
|
||||||
/usr/local/bin/gunicorn config.wsgi -w 4 -b 0.0.0.0:5000 --chdir=/app
|
/usr/local/bin/gunicorn config.wsgi -w 4 -b 0.0.0.0:5000 --chdir=/app
|
|
@ -0,0 +1,10 @@
|
||||||
|
FROM postgres:{{ cookiecutter.postgresql_version }}
|
||||||
|
|
||||||
|
COPY ./compose/production/postgres/backup.sh /usr/local/bin/backup
|
||||||
|
RUN chmod +x /usr/local/bin/backup
|
||||||
|
|
||||||
|
COPY ./compose/production/postgres/restore.sh /usr/local/bin/restore
|
||||||
|
RUN chmod +x /usr/local/bin/restore
|
||||||
|
|
||||||
|
COPY ./compose/production/postgres/list-backups.sh /usr/local/bin/list-backups
|
||||||
|
RUN chmod +x /usr/local/bin/list-backups
|
|
@ -1,6 +1,9 @@
|
||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
# stop on errors
|
|
||||||
set -e
|
set -o errexit
|
||||||
|
set -o pipefail
|
||||||
|
set -o nounset
|
||||||
|
|
||||||
|
|
||||||
# we might run into trouble when using the default `postgres` user, e.g. when dropping the postgres
|
# we might run into trouble when using the default `postgres` user, e.g. when dropping the postgres
|
||||||
# database in restore.sh. Check that something else is used here
|
# database in restore.sh. Check that something else is used here
|
|
@ -1,4 +1,10 @@
|
||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o pipefail
|
||||||
|
set -o nounset
|
||||||
|
|
||||||
|
|
||||||
echo "listing available backups"
|
echo "listing available backups"
|
||||||
echo "-------------------------"
|
echo "-------------------------"
|
||||||
ls /backups/
|
ls /backups/
|
|
@ -1,7 +1,9 @@
|
||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o pipefail
|
||||||
|
set -o nounset
|
||||||
|
|
||||||
# stop on errors
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# we might run into trouble when using the default `postgres` user, e.g. when dropping the postgres
|
# we might run into trouble when using the default `postgres` user, e.g. when dropping the postgres
|
||||||
# database in restore.sh. Check that something else is used here
|
# database in restore.sh. Check that something else is used here
|
|
@ -108,6 +108,8 @@ MANAGERS = ADMINS
|
||||||
# DATABASE CONFIGURATION
|
# DATABASE CONFIGURATION
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
# See: https://docs.djangoproject.com/en/dev/ref/settings/#databases
|
# See: https://docs.djangoproject.com/en/dev/ref/settings/#databases
|
||||||
|
# Uses django-environ to accept uri format
|
||||||
|
# See: https://django-environ.readthedocs.io/en/latest/#supported-types
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': env.db('DATABASE_URL', default='postgres://{% if cookiecutter.windows == 'y' %}localhost{% endif %}/{{cookiecutter.project_slug}}'),
|
'default': env.db('DATABASE_URL', default='postgres://{% if cookiecutter.windows == 'y' %}localhost{% endif %}/{{cookiecutter.project_slug}}'),
|
||||||
}
|
}
|
||||||
|
|
|
@ -159,7 +159,7 @@ ANYMAIL = {
|
||||||
'MAILGUN_API_KEY': env('DJANGO_MAILGUN_API_KEY'),
|
'MAILGUN_API_KEY': env('DJANGO_MAILGUN_API_KEY'),
|
||||||
'MAILGUN_SENDER_DOMAIN': env('MAILGUN_SENDER_DOMAIN')
|
'MAILGUN_SENDER_DOMAIN': env('MAILGUN_SENDER_DOMAIN')
|
||||||
}
|
}
|
||||||
EMAIL_BACKEND = 'anymail.backends.mailgun.MailgunBackend'
|
EMAIL_BACKEND = 'anymail.backends.mailgun.EmailBackend'
|
||||||
|
|
||||||
# TEMPLATE CONFIGURATION
|
# TEMPLATE CONFIGURATION
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
version: '2'
|
version: '2'
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
postgres_data_dev: {}
|
postgres_data_local: {}
|
||||||
postgres_backup_dev: {}
|
postgres_backup_local: {}
|
||||||
|
|
||||||
services:
|
services:
|
||||||
django: &django
|
django:{% if cookiecutter.use_celery == 'y' %} &django{% endif %}
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: ./compose/django/Dockerfile-local
|
dockerfile: ./compose/local/django/Dockerfile
|
||||||
depends_on:
|
depends_on:
|
||||||
- postgres{% if cookiecutter.use_mailhog == 'y' %}
|
- postgres{% if cookiecutter.use_mailhog == 'y' %}
|
||||||
- mailhog{% endif %}
|
- mailhog{% endif %}
|
||||||
|
@ -19,13 +19,15 @@ services:
|
||||||
- USE_DOCKER=yes
|
- USE_DOCKER=yes
|
||||||
ports:
|
ports:
|
||||||
- "8000:8000"
|
- "8000:8000"
|
||||||
command: /start-dev.sh
|
command: /start.sh
|
||||||
|
|
||||||
postgres:
|
postgres:
|
||||||
build: ./compose/postgres
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: ./compose/production/postgres/Dockerfile
|
||||||
volumes:
|
volumes:
|
||||||
- postgres_data_dev:/var/lib/postgresql/data
|
- postgres_data_local:/var/lib/postgresql/data
|
||||||
- postgres_backup_dev:/backups
|
- postgres_backup_local:/backups
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_USER={{cookiecutter.project_slug}}
|
- POSTGRES_USER={{cookiecutter.project_slug}}
|
||||||
{% if cookiecutter.use_mailhog == 'y' %}
|
{% if cookiecutter.use_mailhog == 'y' %}
|
||||||
|
@ -46,7 +48,7 @@ services:
|
||||||
- postgres{% if cookiecutter.use_mailhog == 'y' %}
|
- postgres{% if cookiecutter.use_mailhog == 'y' %}
|
||||||
- mailhog{% endif %}
|
- mailhog{% endif %}
|
||||||
ports: []
|
ports: []
|
||||||
command: /start-celeryworker-dev.sh
|
command: /start-celeryworker.sh
|
||||||
|
|
||||||
celerybeat:
|
celerybeat:
|
||||||
# https://github.com/docker/compose/issues/3220
|
# https://github.com/docker/compose/issues/3220
|
||||||
|
@ -56,5 +58,5 @@ services:
|
||||||
- postgres{% if cookiecutter.use_mailhog == 'y' %}
|
- postgres{% if cookiecutter.use_mailhog == 'y' %}
|
||||||
- mailhog{% endif %}
|
- mailhog{% endif %}
|
||||||
ports: []
|
ports: []
|
||||||
command: /start-celerybeat-dev.sh
|
command: /start-celerybeat.sh
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -6,54 +6,52 @@ volumes:
|
||||||
caddy: {}
|
caddy: {}
|
||||||
|
|
||||||
services:
|
services:
|
||||||
django:
|
django:{% if cookiecutter.use_celery == 'y' %} &django{% endif %}
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: ./compose/django/Dockerfile
|
dockerfile: ./compose/production/django/Dockerfile
|
||||||
depends_on:
|
depends_on:
|
||||||
- postgres
|
- postgres
|
||||||
- redis
|
- redis
|
||||||
command: /gunicorn.sh
|
|
||||||
env_file: .env
|
env_file: .env
|
||||||
|
command: /gunicorn.sh
|
||||||
|
|
||||||
postgres:
|
postgres:
|
||||||
build: ./compose/postgres
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: ./compose/production/postgres/Dockerfile
|
||||||
volumes:
|
volumes:
|
||||||
- postgres_data:/var/lib/postgresql/data
|
- postgres_data:/var/lib/postgresql/data
|
||||||
- postgres_backup:/backups
|
- postgres_backup:/backups
|
||||||
env_file: .env
|
env_file: .env
|
||||||
|
|
||||||
caddy:
|
caddy:
|
||||||
build: ./compose/caddy
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: ./compose/production/caddy/Dockerfile
|
||||||
depends_on:
|
depends_on:
|
||||||
- django
|
- django
|
||||||
ports:
|
|
||||||
- "0.0.0.0:80:80"
|
|
||||||
- "0.0.0.0:443:443"
|
|
||||||
volumes:
|
volumes:
|
||||||
- caddy:/root/.caddy
|
- caddy:/root/.caddy
|
||||||
env_file: .env
|
env_file: .env
|
||||||
|
ports:
|
||||||
|
- "0.0.0.0:80:80"
|
||||||
|
- "0.0.0.0:443:443"
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:3.0
|
image: redis:3.0
|
||||||
{% if cookiecutter.use_celery == 'y' %}
|
{% if cookiecutter.use_celery == 'y' %}
|
||||||
celeryworker:
|
celeryworker:
|
||||||
build:
|
<<: *django
|
||||||
context: .
|
|
||||||
dockerfile: ./compose/django/Dockerfile
|
|
||||||
env_file: .env
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- postgres
|
- postgres
|
||||||
- redis
|
- redis
|
||||||
command: celery -A {{cookiecutter.project_slug}}.taskapp worker -l INFO
|
command: /start-celeryworker.sh
|
||||||
|
|
||||||
celerybeat:
|
celerybeat:
|
||||||
build:
|
<<: *django
|
||||||
context: .
|
|
||||||
dockerfile: ./compose/django/Dockerfile
|
|
||||||
env_file: .env
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- postgres
|
- postgres
|
||||||
- redis
|
- redis
|
||||||
command: celery -A {{cookiecutter.project_slug}}.taskapp beat -l INFO
|
command: /start-celerybeat.sh
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
# like Pillow and psycopg2
|
# like Pillow and psycopg2
|
||||||
# See http://bitly.com/wheel-building-fails-CPython-35
|
# See http://bitly.com/wheel-building-fails-CPython-35
|
||||||
# Verified bug on Python 3.5.1
|
# Verified bug on Python 3.5.1
|
||||||
wheel==0.29.0
|
wheel==0.30.0
|
||||||
|
|
||||||
|
|
||||||
# Bleeding edge Django
|
# Bleeding edge Django
|
||||||
django==1.10.7 # pyup: >=1.10,<1.11
|
django==1.10.8 # pyup: >=1.10,<1.11
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
django-environ==0.4.4
|
django-environ==0.4.4
|
||||||
{% if cookiecutter.use_whitenoise == 'y' -%}
|
{% if cookiecutter.use_whitenoise == 'y' -%}
|
||||||
whitenoise==3.3.0
|
whitenoise==3.3.1
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
coverage==4.4.1
|
coverage==4.4.1
|
||||||
django-coverage-plugin==1.5.0
|
django-coverage-plugin==1.5.0
|
||||||
|
|
||||||
Sphinx==1.6.3
|
Sphinx==1.6.4
|
||||||
django-extensions==1.9.0
|
django-extensions==1.9.1
|
||||||
Werkzeug==0.12.2
|
Werkzeug==0.12.2
|
||||||
django-test-plus==1.0.18
|
django-test-plus==1.0.18
|
||||||
factory-boy==2.9.2
|
factory-boy==2.9.2
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
|
|
||||||
{% if cookiecutter.windows == 'y' -%}
|
{% if cookiecutter.windows == 'y' -%}
|
||||||
# Python-PostgreSQL Database Adapter
|
# Python-PostgreSQL Database Adapter
|
||||||
# If using Win for dev, this assumes Unix in prod
|
# Assuming Windows is used locally, and *nix -- in production.
|
||||||
# ------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
psycopg2==2.7.3.1
|
psycopg2==2.7.3.1
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
||||||
|
@ -24,12 +24,12 @@ Collectfast==0.5.2
|
||||||
|
|
||||||
# Email backends for Mailgun, Postmark, SendGrid and more
|
# Email backends for Mailgun, Postmark, SendGrid and more
|
||||||
# -------------------------------------------------------
|
# -------------------------------------------------------
|
||||||
django-anymail==0.11.1
|
django-anymail==1.0
|
||||||
|
|
||||||
{% if cookiecutter.use_sentry_for_error_reporting == "y" -%}
|
{% if cookiecutter.use_sentry_for_error_reporting == "y" -%}
|
||||||
# Raven is the Sentry client
|
# Raven is the Sentry client
|
||||||
# --------------------------
|
# --------------------------
|
||||||
raven==6.1.0
|
raven==6.2.1
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
||||||
{% if cookiecutter.use_opbeat == "y" -%}
|
{% if cookiecutter.use_opbeat == "y" -%}
|
||||||
|
|
|
@ -11,6 +11,7 @@ coverage==4.4.1
|
||||||
flake8==3.4.1 # pyup: != 2.6.0
|
flake8==3.4.1 # pyup: != 2.6.0
|
||||||
django-test-plus==1.0.18
|
django-test-plus==1.0.18
|
||||||
factory-boy==2.9.2
|
factory-boy==2.9.2
|
||||||
|
django-coverage-plugin==1.5.0
|
||||||
|
|
||||||
# pytest
|
# pytest
|
||||||
pytest-django==3.1.2
|
pytest-django==3.1.2
|
||||||
|
|
|
@ -12,23 +12,6 @@
|
||||||
border-color: #eed3d7;
|
border-color: #eed3d7;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is a fix for the bootstrap4 alpha release */
|
|
||||||
@media (max-width: 47.9em) {
|
|
||||||
.navbar-nav .nav-item {
|
|
||||||
float: none;
|
|
||||||
width: 100%;
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-nav .nav-item + .nav-item {
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav.navbar-nav.pull-xs-right {
|
|
||||||
float: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Display django-debug-toolbar.
|
/* Display django-debug-toolbar.
|
||||||
See https://github.com/django-debug-toolbar/django-debug-toolbar/issues/742
|
See https://github.com/django-debug-toolbar/django-debug-toolbar/issues/742
|
||||||
and https://github.com/pydanny/cookiecutter-django/issues/317
|
and https://github.com/pydanny/cookiecutter-django/issues/317
|
||||||
|
|
|
@ -87,32 +87,6 @@ $red: #b94a48;
|
||||||
color: $red;
|
color: $red;
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////
|
|
||||||
//Navbar//
|
|
||||||
////////////////////////////////
|
|
||||||
|
|
||||||
// This is a fix for the bootstrap4 alpha release
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
border-radius: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 47.9em) {
|
|
||||||
.navbar-nav .nav-item {
|
|
||||||
display: inline-block;
|
|
||||||
float: none;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-nav .nav-item + .nav-item {
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav.navbar-nav.pull-xs-right {
|
|
||||||
float: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
//Django Toolbar//
|
//Django Toolbar//
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
|
|
|
@ -14,8 +14,8 @@
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
|
|
||||||
{% block css %}
|
{% block css %}
|
||||||
<!-- Latest compiled and minified Bootstrap 4 Alpha 4 CSS -->
|
<!-- Latest compiled and minified Bootstrap 4 beta CSS -->
|
||||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
|
||||||
|
|
||||||
<!-- Your stuff: Third-party CSS libraries go here -->
|
<!-- Your stuff: Third-party CSS libraries go here -->
|
||||||
{% endraw %}{% if cookiecutter.use_compressor == "y" %}{% raw %}{% compress css %}{% endraw %}{% endif %}{% raw %}
|
{% endraw %}{% if cookiecutter.use_compressor == "y" %}{% raw %}{% compress css %}{% endraw %}{% endif %}{% raw %}
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<div class="m-b-1">
|
<div class="m-b-1">
|
||||||
<nav class="navbar navbar-toggleable-md navbar-light bg-faded">
|
<nav class="navbar navbar-expand-md navbar-light bg-light">
|
||||||
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
<span class="navbar-toggler-icon"></span>
|
<span class="navbar-toggler-icon"></span>
|
||||||
</button>
|
</button>
|
||||||
|
@ -88,10 +88,10 @@
|
||||||
================================================== -->
|
================================================== -->
|
||||||
<!-- Placed at the end of the document so the pages load faster -->
|
<!-- Placed at the end of the document so the pages load faster -->
|
||||||
{% block javascript %}
|
{% block javascript %}
|
||||||
<!-- Required by Bootstrap v4 Alpha 4 -->
|
<!-- Required by Bootstrap v4 beta -->
|
||||||
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script>
|
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
|
||||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
|
||||||
|
|
||||||
<!-- Your stuff: Third-party javascript libraries go here -->
|
<!-- Your stuff: Third-party javascript libraries go here -->
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user