Mach Django mit CodeStar (Python3.8, Django2.1.15)

Erstellen Sie ein neues Projekt

Wählen Sie Python (Django) in CodeStar und erstellen Sie ein Projekt. Das Repository verwendet CodeCommit.

image.png

Wenn das CodeStar-Dashboard angezeigt und bereit ist, können Sie die Django-Seite von Ihrem Anwendungsendpunkt aus sehen.

Erstellen Sie einen IAM-Benutzer und hängen Sie AWSCodeCommitFullAccess an. image.png

Generieren Sie AWS CodeCommit HTTPS Git-Anmeldeinformationen und Anmeldeinformationen auf der Registerkarte Anmeldeinformationen und speichern Sie Ihren Benutzernamen und Ihr Kennwort. Sie benötigen es, wenn Sie die URL von CodeCommit klonen. image.png

Fügen Sie den von Ihnen erstellten IAM-Benutzer zum CodeStar-Projektteam hinzu. image.png

Projekt bearbeiten

Erstellen Sie mit Anaconda eine Python 3.8-Umgebung.

$ conda create -n py38 python=3.8
$ conda activate py38

Kopieren Sie die URL von CodeCommit und klonen Sie sie mit git.

$ git clone https://username:[email protected]/v1/repos/gachimoto-gtfs
$ cd gachimoto-gtfs

Installieren Sie die erforderlichen Bibliotheken.

$ pip install -r requirements.txt

Fügen Sie .gitignore hinzu.

 Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

 C extensions
*.so

 Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

 PyInstaller
  Usually these files are written by a python script from a template
  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

 Installer logs
pip-log.txt
pip-delete-this-directory.txt

 Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/

 Translations
*.mo
*.pot

 Django stuff:
*.log
local_settings.py

 Flask stuff:
instance/
.webassets-cache

 Scrapy stuff:
.scrapy

 Sphinx documentation
docs/_build/

 PyBuilder
target/

 Jupyter Notebook
.ipynb_checkpoints

 pyenv
.python-version

 celery beat schedule file
celerybeat-schedule

 SageMath parsed files
*.sage.py

 dotenv
.env

 virtualenv
.venv
venv/
ENV/

 Spyder project settings
.spyderproject
.spyproject

 Rope project settings
.ropeproject

 mkdocs documentation
/site

 mypy
.mypy_cache/


.idea/
db.sqlite3
migrations/

Bearbeiten Sie einen Teil von buildspec.yml.

commands:
  # Install dependencies needed for running tests
  - pip install -r requirements/common.txt
 - python manage.py makemigrations helloworld
 - python manage.py migrate
 - python manage.py collectstatic --noinput

Nach der Installation der externen Bibliothek (zB Anfragen)

$ pip install requests

Bearbeiten Sie auch common.txt.

 dependencies common to all environments
Django==2.1.15
requests==2.22.0

Erstellen Sie die erste Seite

helloworld/views.py

 helloworld/views.py
from django.shortcuts import render
from django.views import generic
from django.views.generic import TemplateView
from django.views.generic import ListView

class Top(generic.TemplateView):
    template_name = 'top.html'

helloworld/urls.py

 helloworld/urls.py
from django.urls import path
from django.conf.urls import url
from django.conf.urls.static import static
from helloworld import views

urlpatterns = [
    # url(r'^$', views.HomePageView.as_view()),
    path('', views.Top.as_view(), name='top'),
]

helloworld/tests.py

from django.test import TestCase, RequestFactory

helloworld/templates/top.html

{% extends "base.html" %}
{% block content %}
 <p> Willkommen bei gachimoto-gtfs </ p>
{% endblock %}

helloworld/templates/base.html

<!doctype html>
{% load staticfiles %}
<html lang="ja">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css"
          integrity="sha384-9gVQ4dYFwwWSjIDZnLEWnxCjeSWFphJiwGPXr1jddIhOegiu1FwO5qRGvFXOdJZ4" crossorigin="anonymous">
    <title>gachimoto gtfs api</title>
  </head>
  <body>
 <! - Navibar->
    <nav class="navbar navbar-expand-lg navbar-light bg-light">
      <a class="navbar-brand" href="{% url 'top' %}">G</a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="navbarSupportedContent">
        <ul class="navbar-nav mr-auto">
        </ul>
      </div>
    </nav>

 <! - Hauptinhalt->
    <div class="container mt-3">
      {% block content %}{% endblock %}
    </div>

    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
            integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
            crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"
            integrity="sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ"
            crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"
            integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm"
            crossorigin="anonymous"></script>
  </body>
</html>

ec2django/urls.py

""" ec2django URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
from django.conf import settings
from django.conf.urls.static import static
from django.conf.urls import include, url
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('helloworld.urls')),
]

ec2django/settings.py

"""
Django settings for ec2django project.

Generated by 'django-admin startproject' using Django 2.1.14.

For more information on this file, see
https://docs.djangoproject.com/en/2.1/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.1/ref/settings/
"""

import os

 Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


 Quick-start development settings - unsuitable for production
 See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/

 SECURITY WARNING: keep the secret key used in production secret!
 SECRET_KEY = 'CHANGE_ME' # Ändern Sie entsprechend

 SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True # bool( os.environ.get('DJANGO_DEBUG', False) )

ALLOWED_HOSTS = ['*']

 Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'helloworld.apps.HelloworldConfig', # 'helloworld',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'ec2django.urls'

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

WSGI_APPLICATION = 'ec2django.wsgi.application'


 Database
 https://docs.djangoproject.com/en/2.1/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


 Password validation
 https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


 Internationalization
 https://docs.djangoproject.com/en/2.1/topics/i18n/

LANGUAGE_CODE = 'ja' # 'en-us'

TIME_ZONE = 'Asia/Tokyo' # 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


 Static files (CSS, JavaScript, Images)
 https://docs.djangoproject.com/en/2.1/howto/static-files/

STATIC_URL = '/static/'
STATIC_ROOT = 'static'

Stellen Sie das Projekt bereit

Überprüfen Sie die Seite.

$ python manage.py migrate
$ python manage.py runserver

image.png

Erstellen Sie einen Feature-Zweig und legen Sie fest.

$ git branch feature 
$ git checkout feature
$ git status 
$ git add .
 $ git commit -m "erste Seite"
$ git push origin feature

Erstellen Sie mit CodeCommit einen Entwicklungszweig. image.png

image.png

Vom Feature zum Entwickeln zusammenführen. image.png

image.png

In ähnlicher Weise von Entwickeln zu Master verschmelzen. Dann wird CodePipline gestartet und ohne Erlaubnis bereitgestellt.

image.png

Die Bereitstellung war erfolgreich. image.png

Werfen wir einen Blick auf die Seite nach erfolgreicher Bereitstellung. image.png

[Zum Starten von Django beim Neustart von EC2 festlegen](https://qiita.com/SatoshiGachiFujimoto/items/0f7929d7fe7e30b9413c#ec2%E5%86%8D%E8%B5%B7%E5%8B%95%E6% 99% 82% E3% 81% ABdjango% E3% 82% 92% E8% B5% B7% E5% 8B% 95% E3% 81% 99% E3% 82% 8B% E3% 82% 88% E3% 81% 86% E3% 81% AB% E8% A8% AD% E5% AE% 9A).

Danke für deine harte Arbeit. Jetzt können Sie schnell eine Django-App erstellen!

Nachtrag

Statische Dateien lesen und Produktion einstellen (Debug = False)

Sammeln Sie statische Dateien.

$ python manage.py collectstatic --noinput
$ python manage.py runserver

settings.py Stellen Sie den DEBUG-Modus auf False.

DEBUG = False

urls.py Fügen Sie eine statische Ordnereinstellung hinzu.

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('helloworld.urls')),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Bild hinzufügen

Fügen Sie ein beliebiges Bild zu helloworld / static / helloworld / img / und static / helloworld / img / hinzu. Wenn Sie auch CSS usw. hinzufügen, müssen Sie den statischen Ordner und darunter vereinheitlichen. Es kann sein, dass es nicht richtig gelesen wird, wenn DEBUG = False ist.

Beispiel für die Bildanzeige (base.html)

<a class="navbar-brand" href="{% url 'top' %}"><img src="{% static 'helloworld/img/G.svg' %}" width="11%" /></a>

Recommended Posts

Mach Django mit CodeStar (Python3.6.8, Django2.2.9)
Mach Django mit CodeStar (Python3.8, Django2.1.15)
Mach Houdini mit Python3! !! !!
Python3 + Django ~ Mac ~ mit Apache
Erste Schritte mit Python Django (1)
Erste Schritte mit Python Django (4)
Erste Schritte mit Python Django (3)
Führen Sie eine AES-Verschlüsselung mit DJango durch
Einführung in Python Django (6)
Erste Schritte mit Python Django (5)
Schwanzrekursion mit Python2 durchführen
Was tun mit PYTHON Release?
Führen Sie python3 Django1.9 mit mod_wsgi aus (deploy)
Lassen Sie uns mit Python Image Scraping durchführen
Python | Was Sie mit Python machen können
So führen Sie eine arithmetische Verarbeitung mit der Django-Vorlage durch
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Python Django Tutorial (2)
Scraping mit Python
Python mit Go
Internationalisierung mit Django
Twilio mit Python
Lassen Sie Heroku die Hintergrundverarbeitung mit Python durchführen
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python Django Tutorial (8)
Wie man einen Taschentest mit Python macht
Python beginnt mit ()
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Python Django Tutorial (6)
mit Syntax (Python)
CRUD mit Django
Bingo mit Python
Zundokokiyoshi mit Python
Lassen Sie uns MySQL-Daten mit Python bearbeiten
Python Django Tutorial (7)
Python Django Tutorial (1)
Python Django Tutorial Tutorial
Python Django Tutorial (3)
Excel mit Python
Mikrocomputer mit Python
Python Django Tutorial (4)
Mit Python besetzen
Ich möchte es mit Python Lambda Django machen, aber ich werde aufhören
[AWS] Erstellen Sie mit CodeStar eine Python Lambda-Umgebung und führen Sie Hello World aus
So führen Sie eine Mehrkern-Parallelverarbeitung mit Python durch
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Erstellen Sie mit Docker eine Umgebung aus Nginx + uWSGI + Python (Django)
Django mit Python Tools 2.2 für Visual Studio (PTVS 2.2)
Einfache Aufgabenliste, erstellt mit Python + Django
Python-Anfänger süchtig nach Django
Erstellen Sie mit IntelliJ schnell eine Python Django-Umgebung
Web Scraping mit Python (Wettervorhersage)
Web Scraping mit Python (Aktienkurs)
Verwenden Sie Python / Django mit dem Windows Azure Cloud Service!
Serielle Kommunikation mit Python
Authentifizieren Sie Google mit Django