Herramientas de usuario

Herramientas del sitio


wiki2:python:django:project

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
wiki2:python:django:project [2020/12/25 09:04]
alfred [.gitignore]
wiki2:python:django:project [2021/02/08 18:45] (actual)
Línea 1: Línea 1:
 ====== Preparing a Django project ====== ====== Preparing a Django project ======
 +===== Pipeline =====
  
  
Línea 8: Línea 9:
 poetry add django poetry add django
  
-poetry run django-admin startproject {project}+poetry run django-admin startproject {project} ​.
  
 - fix directory generation - - fix directory generation -
Línea 25: Línea 26:
  
 git push -u origin master git push -u origin master
 +
 +- move settings to an inner package, renaming the file to '​default.py'​ -
 +
 +- Add a develop.py file -
 +
 +- In settings\__init__.py and in settings\develop.py add the line: from .default import * a
 +
 +- Change BASE_DIR like this: BASE_DIR = Path(__file__).resolve().parent.parent.parent
 +
 +- Add import os
 +
 +- Change: ALLOWED_HOSTS = ['​0.0.0.0'​]
 +
 +poetry add whitenoise
 +
 +- Configure whitenoise
 +
 +- Add STATIC_ROOT = os.path.join(BASE_DIR,​ '​static'​)
 +
 +poetry env list --full-path
 +
 +- Change the config for running in that path: manage.py runserver 0.0.0.0:​8000 --nostatic . Also add the DJANGO_SETTINGS_MODULE envvar as {project}.settings.develop
 +
 +poetry add psycopg2-binary
 +
 +poetry add gunicorn
 +
 +mkdir docker
 +
 +- Add the docker files
 +
 +docker-compose up postgres12
 +
 +docker exec -ti --user postgres postgres12 createdb {project}
 +
 +- Change the database configuration:​
 +
 +DATABASES = {
 +    '​default':​ {
 +        '​ENGINE':​ '​django.db.backends.postgresql',​
 +        '​NAME':​ '​{project name}',​
 +        '​USER':​ '​postgres',​
 +        '​PASSWORD':​ '​mysecretpassword',​
 +        '​HOST':​ os.environ.get('​DB_HOST',​ '​127.0.0.1'​),​
 +        '​TEST':​ {
 +            '​NAME':​ '​{project_name_test}',​
 +        }
 +    }
 +}
 +
 +ln -s ../​daauth/​daauth daauth
 +
 +- Remove admin from urls.py and from settings -
 +
 +- Add models.py, views.py and the package migrations. Also the apps.py. - 
 +
 +- Add to INSTALLED_APPS:​ daauth & {project}
 +
 +- Add the next lines to settings/​default.py:​
 +AUTH_USER_MODEL = '​{project}.User'​
 +LOGIN_REDIRECT_URL = '/'​
 +
 +python manage.py migrate
 +
 +mkddir -p static/​styles/​sass
 +
 +touch static/​styles/​sass/​main.scss static/​styles/​sass/​stylesheet.scss
 +
 +- Add @import "​stylesheet";​ to main.scss
 +
 +sass --watch static/​styles/​sass/​main.scss:​static/​styles/​stylesheet.css
 +
 +- Add to repository those last files
 +
 +git commit
 +
 +mkdir -p {project}/​templates
 +
 +touch {project}/​templates/​base.html
 +
 +
 +
 +
 </​code>​ </​code>​
  
-===== .gitignore ​=====+ 
 +===== Concrete ===== 
 +==== .gitignore ====
  
 <​code>​ <​code>​
Línea 56: Línea 142:
 </​code>​ </​code>​
  
 +==== Whitenoise ====
 +
 +  * http://​whitenoise.evans.io/​en/​stable/#​quickstart-for-django-apps
 +
 +==== app.Dockerfile ====
 +
 +<​code>​
 +FROM python:​3.9-alpine
 +ENV PYTHONUNBUFFERED 1
 +
 +ARG http_proxy
 +ENV https_proxy=$http_proxy
 +ENV http_proxy=$http_proxy
 +ENV HTTP_PROXY=$http_proxy
 +ENV HTTPS_PROXY=$http_proxy
 +
 +RUN apk update
 +RUN apk add --no-cache python3-dev libffi-dev postgresql-libs postgresql-dev build-base cairo cairo-dev pango pango-dev fontconfig ttf-dejavu ttf-freefont
 +RUN apk add --virtual build-deps gcc python3-dev musl-dev
 +RUN apk add jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev py-pillow
 +RUN apk add git
 +
 +
 +RUN mkdir -p /srv/app
 +WORKDIR /srv
 +
 +RUN pip install --upgrade pip
 +RUN pip install poetry
 +COPY pyproject.toml /​srv/​pyproject.toml
 +COPY poetry.lock /​srv/​poetry.lock
 +RUN poetry install
 +
 +CMD poetry run gunicorn strit.wsgi --bind 0.0.0.0:​8000
 +</​code>​
 +
 +==== docker-compose.yml ====
 +<​code>​
 +version: "​3.3"​
 +
 +services:
 +  postgres12:
 +    container_name:​ postgres12
 +    image: postgres:12
 +    volumes:
 +      - /​srv/​data/​pg12:/​var/​lib/​postgresql/​data/​
 +    environment:​
 +      - POSTGRES_PASSWORD=mysecretpassword
 +    ports:
 +      - 5432:5432
 +  {project}:
 +    build:
 +      context: ..
 +      dockerfile: docker/​app.Dockerfile
 +    ports:
 +      - 8000:8000
 +    container_name:​ {project}
 +    depends_on:
 +      - postgres12
 +    environment:​
 +      - DB_HOST=postgres12
 +    volumes:
 +      - ..:/srv
 +    command: poetry run gunicorn {project}.wsgi --bind 0.0.0.0:​8000
 +</​code>​
 +
 +==== apps.py ====
 +<​code>​
 +from django.apps import AppConfig
 +
 +
 +class {Project}Config(AppConfig):​
 +    name = '​{project}'​
 +</​code>​
 +
 +==== models.py ====
 +<​code>​
 +from django.db import models
 +from daauth.models import BaseUser
 +
 +
 +class User(BaseUser):​
 +    class Meta:
 +        db_table = "​users"​
 +</​code>​
 +
 +==== base.html ====
 +
 +  * http://​htmlshell.com/​
 +
 +<​code>​
 +<​!DOCTYPE html>
 +<!--[if lte IE 6]><​html class="​preIE7 preIE8 preIE9"><​![endif]-->​
 +<!--[if IE 7]><​html class="​preIE8 preIE9"><​![endif]-->​
 +<!--[if IE 8]><​html class="​preIE9"><​![endif]-->​
 +<!--[if gte IE 9]><​!--><​html><​!--<​![endif]-->​
 + {% load dutils %}
 +  <​head>​
 +    <meta charset="​UTF-8">​
 +  <meta http-equiv="​X-UA-Compatible"​ content="​IE=edge,​chrome=1">​
 +  <meta name="​viewport"​ content="​width=device-width,​initial-scale=1">​
 +    <​title>​title</​title>​
 +  <meta name="​author"​ content="​name">​
 +  <meta name="​description"​ content="​description here">​
 +  <meta name="​keywords"​ content="​keywords,​here">​
 +  <link rel="​stylesheet"​ href="​{% dstatic '​styles/​stylesheet.css'​ %}" type="​text/​css">​
 +  </​head>​
 +  <​body>​
 +    aaaaa
 +  </​body>​
 +</​html>​
 +</​code>​
wiki2/python/django/project.1608887041.txt.gz · Última modificación: 2020/12/25 10:04 (editor externo)