[PYTHON] Créer une application Web avec Django

C'est le premier message de Qiita. J'avais l'habitude de développer une application web en utilisant Django en stage, mais je ne l'avais jamais créée à partir de zéro, j'ai donc essayé de démarrer le serveur.

supposition

Environnement

Créez un environnement de développement.

terminal


$ brew install pyenv pyenv-virtualenv mysql
$ pyenv install 3.5.1
$ pyenv global 3.5.1
$ pyenv virtualenv 3.5.1 django-sample-3.5.1

$ mysql.server start

Créer une application Django

La structure des répertoires est la suivante. Lorsque je l'ai recherché, il y avait de nombreuses configurations dans lesquelles j'ai créé un dossier avec le nom du projet / nom du projet et ajouté des applications locales en dessous.

django-sample


.
├── README.md
├── manage.py
├── libs
│   └── #La bibliothèque est entrée par pip install
├── requirements.txt
├── templates
│   ├── common
│   │   └── _base.html
│   └── home
│       └── index.html
└── django-sample
    ├── settings.py
    ├── urls.py
    └── views.py

Il semble y avoir une commande qui le génère automatiquement, mais cette fois je l'ai fait manuellement.

terminal


$ mkdir django-sample
$ cd django-sample
$ pyenv local django-sample-3.5.1

Écrivez les bibliothèques requises dans requirements.txt.

requirements.txt


django==1.11
django-extensions==1.7.8
mysqlclient==1.3.10

Vous pouvez l'installer normalement, mais je voulais le mettre sous le projet comme Rails vendor / bundle, alors installez-le sous ./libs.

terminal


$ pip install -r requirements.txt -t libs

Modifiez manage.py.

manage.py


import os
import sys

# ./Passer le chemin des libs
sys.path.append(os.path.join(os.path.dirname(__file__), 'libs'))

settings_module_name = os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django-sample.settings')

if __name__ == '__main__':
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)

Modifiez settings.py. Le nom d'utilisateur, le mot de passe, etc. de la base de données sont définis dans les variables d'environnement. La création de bases de données, d'utilisateurs, etc. est omise. Depuis que j'ai essayé la fonction de connexion, etc., elle peut contenir des paramètres qui ne sont pas nécessaires cette fois.

django-sample/settings.py


import os


ROOT_PATH = os.path.dirname(os.path.dirname(__file__))

DEBUG = os.getenv('DJANGO_SAMPLE_BEBUG')

ALLOWED_HOSTS = [
    'localhost'
]

INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.messages',
    'django.contrib.sessions',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'django_extensions'
]

MIDDLEWARE_CLASSES = [
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware'
]

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': os.getenv('DJANGO_SAMPLE_DATABASE_HOST'),
        'NAME': os.getenv('DJANGO_SAMPLE_DATABASE_NAME'),
        'USER': os.getenv('DJANGO_SAMPLE_DATABASE_USER'),
        'PASSWORD': os.getenv('DJANGO_SAMPLE_DATABASE_PASSWORD')
    }
}

SESSION_COOKIE_NAME = 'djangosample'
SECRET_KEY = os.getenv('DJANGO_SAMPLE_SECRET_KEY')
CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
CSRF_SESSION_NAME = 'csrf'
CSRF_COOKIE_SECURE = True
MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'

ROOT_URLCONF = 'django-sample.urls'

LOGIN_REDIRECT_URL = '/'

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(ROOT_PATH, 'static')
]

SITE_ID = 1

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(ROOT_PATH, 'templates')
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'django.template.context_processors.media',
                'django.template.context_processors.i18n',
                'django.template.context_processors.request',
                'django.template.context_processors.static'
            ]
        }
    }
]

Migrez la base de données.

terminal


$ python manage.py migate

Définissez la classe View.

django-sample/views.py


from django.views.generic import TemplateView


class HomeView(TemplateView):
    template_name = 'home/index.html'

    def get_context_data(self, **kwargs):
        context = super(HomeView, self).get_context_data(**kwargs)
        return context

home_view = HomeView.as_view()

Modifiez le modèle affiché dans le navigateur.

templates/home/index.html


{% extends 'common/_base.html' %}

{% block content %}
  <h1>Hello World!!</h1>
{% endblock %}

templates/common/_base.html


<!DOCTYPE html>
<html>
<head>
  <title>django-sample</title>
</head>
<body>
{% block content %}
{% endblock %}
</body>
</html>

Enfin, définissez le routage.

django-sample/urls.py


from django.conf import settings
from django.conf.urls import include, url

from . import views


urlpatterns = [
  # /
  url(r'^$', views.home_view)
]

Lancez le serveur et accédez à [http: // localhost: 8000](http: // localhost: 8000).

terminal


$ python manage.py runserver

finalement

Ce code est également affiché sur Github. https://github.com/yukidallas/django-sample

La prochaine fois, je publierai sur la mise en œuvre de la fonction de connexion (enregistrement de courrier, connexion Twitter).

Recommended Posts

Créer une application Web avec Django
J'ai fait une application WEB avec Django
Créer une application Web avec Django
Déployer l'application Django avec Docker
[Python] Une application web rapide avec Bottle!
Exécutez une application Web Python avec Docker
Créer une application Web de type Flask / Bottle sur AWS Lambda avec Chalice
Lancement d'une application Web sur AWS avec django et modification des tâches
[Python] Créer un environnement de développement Django avec Docker
Créez un environnement Django avec Vagrant en 5 minutes
Créer un environnement de développement Django à l'aide de Doker Toolbox
Créez une application Hello World avec un seul fichier avec django
Créez rapidement un environnement Python Django avec IntelliJ
Développement d'applications Web avec Flask
Créer une page d'accueil avec django
Application Web avec Python + Flask ② ③
Web en temps réel avec les chaînes Django
Application Web avec Python + Flask ④
Retour sur la création d'un service Web avec Django 1
(Python) Essayez de développer une application Web en utilisant Django
Lancer une application Web Python sur Nginx + Gunicorn avec Docker
Retour sur la création d'un service Web avec Django 2
Application Web réalisée avec Python3.4 + Django (Construction de l'environnement Part.1)
Créer un environnement de développement d'applications d'apprentissage automatique avec Python
Un mémo sur la création d'une application Django (Python) avec Docker
Créez un environnement de développement avec Poetry Django Docker Pycharm
Construire un environnement Django pour Win10 (avec espace virtuel)
L'histoire de la création d'une application Web qui enregistre des lectures approfondies avec Django
Essayez de créer une application Web avec Vue.js et Django (édition Mac) - (1) Construction d'environnement, création d'application
Créez une application Web qui reconnaît les nombres avec un réseau neuronal
Développement d'une application WEB avec Django [Django startup]
Créer une application Web avec Flask ②
Développement d'une application WEB avec Django [Ajout d'application]
Mesurer la couverture des applications Django avec Coverage.py
[Memo] Construire un environnement de développement pour Django + Nuxt.js avec Docker
Créer un fichier deb avec Docker
Créer une application Web pour la transcription vocale
Django Tips-Créez un site de classement avec Django-
Application de publication sur Twitter réalisée avec Django
[Django] Créez rapidement un environnement de développement de conteneur Django (Docker) avec PyCharm
Créez une application de tableau d'affichage à partir de zéro avec Django. (Partie 2)
Créez un serveur API Web ultra-rapide avec Falcon
Créez une application de tableau d'affichage à partir de zéro avec Django. (Partie 3)
Créer une application Web avec Flask ①
Créer un filtre avec un modèle django
Créez une API Web capable de fournir des images avec Django
Créer une application Todo avec Django ① Créer un environnement avec Docker
(Pour les débutants) Essayez de créer une API Web simple avec Django
Créer une application Web avec Flask ③
Déployer l'application Django sur EC2 avec Nginx + Gunicorn + Supervisor
Créer une application Web avec Flask ④
Créer un téléchargeur de fichiers avec Django
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 1
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Page de création de décalage)
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 2
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 3
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 4
[DynamoDB] [Docker] Créer un environnement de développement pour DynamoDB et Django avec docker-compose
Développement d'une application WEB avec Django [Définition de modèle]
Créez facilement un environnement de développement avec Laragon