[PYTHON] Erstellen Sie eine Webanwendung mit Django

Dies ist Qiitas erster Beitrag. Früher habe ich eine Webanwendung mit Django als Praktikum entwickelt, aber ich hatte sie nie von Grund auf neu erstellt, also habe ich versucht, den Server zu starten.

Annahme

Umgebung

Erstellen Sie eine Entwicklungsumgebung.

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

Erstellen einer Django-Anwendung

Die Verzeichnisstruktur ist wie folgt. Als ich es nachgeschlagen habe, gab es viele Konfigurationen, in denen ich einen Ordner mit dem Projektnamen / Projektnamen erstellt und lokale Apps darunter hinzugefügt habe.

django-sample


.
├── README.md
├── manage.py
├── libs
│   └── #Die Bibliothek wird durch Pip-Installation eingegeben
├── requirements.txt
├── templates
│   ├── common
│   │   └── _base.html
│   └── home
│       └── index.html
└── django-sample
    ├── settings.py
    ├── urls.py
    └── views.py

Es scheint einen Befehl zu geben, der ihn automatisch generiert, aber diesmal habe ich ihn manuell ausgeführt.

terminal


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

Schreiben Sie die erforderlichen Bibliotheken in die Datei require.txt.

requirements.txt


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

Sie können es normal installieren, aber ich wollte es wie Rails Vendor / Bundle unter das Projekt stellen, also installieren Sie es unter ./libs.

terminal


$ pip install -r requirements.txt -t libs

Bearbeiten Sie manage.py.

manage.py


import os
import sys

# ./Übergeben Sie den libs-Pfad
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)

Bearbeiten Sie settings.py. Der Datenbankbenutzername, das Kennwort usw. werden in den Umgebungsvariablen festgelegt. Das Erstellen von Datenbanken, Benutzern usw. entfällt. Da ich die Anmeldefunktion usw. ausprobiert habe, enthält sie möglicherweise Einstellungen, die diesmal nicht erforderlich sind.

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'
            ]
        }
    }
]

Migrieren Sie die Datenbank.

terminal


$ python manage.py migate

Definieren Sie die View-Klasse.

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()

Bearbeiten Sie die im Browser angezeigte Vorlage.

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>

Stellen Sie abschließend das Routing ein.

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)
]

Starten Sie den Server und greifen Sie auf [http: // localhost: 8000](http: // localhost: 8000) zu.

terminal


$ python manage.py runserver

Schließlich

Dieser Code wird auch auf Github veröffentlicht. https://github.com/yukidallas/django-sample

Nächstes Mal werde ich über die Implementierung der Login-Funktion (Mail-Registrierung, Twitter-Login) berichten.

Recommended Posts

Erstellen Sie eine Webanwendung mit Django
Ich habe eine WEB-Bewerbung bei Django gemacht
Erstellen Sie eine Webanwendung mit Django
Stellen Sie die Django-Anwendung mit Docker bereit
[Python] Eine schnelle Webanwendung mit Bottle!
Führen Sie eine Python-Webanwendung mit Docker aus
Erstellen Sie mit Chalice eine flaschen- / flaschenähnliche Webanwendung auf AWS Lambda
Startete eine Webanwendung auf AWS mit Django und wechselte Jobs
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Erstellen Sie mit Vagrant in 5 Minuten eine Django-Umgebung
Erstellen Sie mit der Doker Toolbox eine Django-Entwicklungsumgebung
Erstellen Sie mit Django eine Hallo-Welt-Anwendung mit nur einer Datei
Erstellen Sie mit IntelliJ schnell eine Python Django-Umgebung
Entwicklung von Webanwendungen mit Flask
Erstellen Sie eine Homepage mit Django
Webanwendung mit Python + Flask ② ③
Echtzeit-Web mit Django-Kanälen
Webanwendung mit Python + Flask ④
Rückblick auf die Erstellung eines Webdienstes mit Django 1
(Python) Versuchen Sie, eine Webanwendung mit Django zu entwickeln
Starten Sie mit Docker eine Python-Webanwendung auf Nginx + Gunicorn
Rückblick auf die Erstellung eines Webdienstes mit Django 2
Webanwendung erstellt mit Python3.4 + Django (Teil.1 Umgebungskonstruktion)
Erstellen Sie mit Python eine Entwicklungsumgebung für maschinelles Lernen
Ein Memo zum Erstellen einer Django (Python) -Anwendung mit Docker
Erstellen Sie eine Entwicklungsumgebung mit Poetry Django Docker Pycharm
Erstellen einer Django-Umgebung für Win10 (mit virtuellem Speicherplatz)
Die Geschichte der Erstellung einer Webanwendung, die umfangreiche Lesungen mit Django aufzeichnet
Versuchen Sie, eine Webanwendung mit Vue.js und Django (Mac Edition) zu erstellen - (1) Umgebungskonstruktion, Anwendungserstellung
Erstellen Sie eine Web-App, die Zahlen mit einem neuronalen Netzwerk erkennt
Entwicklung einer WEB-Anwendung mit Django [Django-Start]
Erstellen einer Webanwendung mit Flask ②
Entwicklung einer WEB-Anwendung mit Django [Anwendungszusatz]
Messen Sie die Abdeckung der Django-Anwendung mit Coverage.py
[Memo] Erstellen Sie mit Docker eine Entwicklungsumgebung für Django + Nuxt.js
Erstellen Sie eine Deb-Datei mit Docker
Erstellen einer Web-App für die Sprachtranskription
Django-Tipps - Erstellen Sie eine Ranking-Site mit Django-
Twitter-Posting-Anwendung mit Django gemacht
[Django] Erstellen Sie mit PyCharm schnell eine Entwicklungsumgebung für Django-Container (Docker)
Erstellen Sie mit Django eine Bulletin-Board-App von Grund auf neu. (Teil 2)
Erstellen Sie mit Falcon einen Light-Speed-Web-API-Server
Erstellen Sie mit Django eine Bulletin-Board-App von Grund auf neu. (Teil 3)
Erstellen einer Webanwendung mit Flask ①
Machen Sie einen Filter mit einer Django-Vorlage
Erstellen Sie eine Web-API, die Bilder mit Django liefern kann
Erstellen einer Todo-App mit Django ① Erstellen Sie eine Umgebung mit Docker
(Für Anfänger) Versuchen Sie, mit Django eine einfache Web-API zu erstellen
Erstellen einer Webanwendung mit Flask ③
Stellen Sie die Django-Anwendung auf EC2 mit Nginx + Gunicorn + Supervisor bereit
Erstellen einer Webanwendung mit Flask ④
Erstellen Sie mit Django einen Datei-Uploader
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 1 erstellen
Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Schichterstellungsseite)
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 2 erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 3 erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 4 erstellen
[DynamoDB] [Docker] Erstellen Sie mit Docker-Compose eine Entwicklungsumgebung für DynamoDB und Django
Entwicklung einer WEB-Anwendung mit Django [Modelldefinition]
Erstellen Sie mit Laragon ganz einfach eine Entwicklungsumgebung