Sélectionnez Python (Django) dans CodeStar et créez un projet. Le référentiel utilise CodeCommit.
Le tableau de bord CodeStar s'affiche et, lorsque vous êtes prêt, vous pouvez voir la page Django à partir du point de terminaison de votre application.
Créez un utilisateur IAM et attachez AWSCodeCommitFullAccess.
Générez les informations d'identification et les informations d'identification AWS CodeCommit HTTPS Git à partir de l'onglet Informations d'identification et enregistrez votre nom d'utilisateur et votre mot de passe. Vous en aurez besoin lorsque vous clonerez l'URL de CodeCommit.
Ajoutez l'utilisateur IAM que vous avez créé à l'équipe de projet CodeStar.
Créez un environnement Python 3.8 avec Anaconda.
$ conda create -n py38 python=3.8
$ conda activate py38
Copiez l'URL de CodeCommit et clonez-la avec git.
$ git clone https://username:[email protected]/v1/repos/gachimoto-gtfs
$ cd gachimoto-gtfs
Installez les bibliothèques requises.
$ pip install -r requirements.txt
Ajoutez .gitignore.
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/
Modifiez une partie de 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
Après l'installation de la bibliothèque externe (par exemple les demandes)
$ pip install requests
Modifiez également common.txt.
dependencies common to all environments
Django==2.1.15
requests==2.22.0
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> Bienvenue dans 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>
<! - Contenu principal->
<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' # Changer de manière appropriée
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'
Consultez la page.
$ python manage.py migrate
$ python manage.py runserver
Créez une branche de fonctionnalité et validez.
$ git branch feature
$ git checkout feature
$ git status
$ git add .
$ git commit -m "première page"
$ git push origin feature
Créez une branche de développement avec CodeCommit.
Fusionner d'une fonctionnalité à un développement.
De même, fusionnez de développer à master. Ensuite, CodePipline démarrera et le déploiera sans autorisation.
Le déploiement a réussi.
Jetons un coup d'œil à la page après un déploiement réussi.
[Configuré pour démarrer Django au redémarrage d'EC2](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).
Je vous remercie pour votre travail acharné. Vous pouvez maintenant créer rapidement une application Django!
Collectez des fichiers statiques.
$ python manage.py collectstatic --noinput
$ python manage.py runserver
settings.py Définissez le mode DEBUG sur False.
DEBUG = False
urls.py Ajoutez un paramètre de dossier statique.
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('helloworld.urls')),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Ajoutez n'importe quelle image à helloworld / static / helloworld / img / et static / helloworld / img /. Si vous ajoutez également css etc., il est nécessaire d'unifier le dossier statique et ci-dessous. Il peut ne pas être lu correctement lorsque DEBUG = False.
<a class="navbar-brand" href="{% url 'top' %}"><img src="{% static 'helloworld/img/G.svg' %}" width="11%" /></a>
Recommended Posts