Wählen Sie Python (Django) in CodeStar und erstellen Sie ein Projekt. Das Repository verwendet CodeCommit.
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.
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.
Fügen Sie den von Ihnen erstellten IAM-Benutzer zum CodeStar-Projektteam hinzu.
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
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'
Überprüfen Sie die Seite.
$ python manage.py migrate
$ python manage.py runserver
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.
Vom Feature zum Entwickeln zusammenführen.
In ähnlicher Weise von Entwickeln zu Master verschmelzen. Dann wird CodePipline gestartet und ohne Erlaubnis bereitgestellt.
Die Bereitstellung war erfolgreich.
Werfen wir einen Blick auf die Seite nach erfolgreicher Bereitstellung.
[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!
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)
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.
<a class="navbar-brand" href="{% url 'top' %}"><img src="{% static 'helloworld/img/G.svg' %}" width="11%" /></a>
Recommended Posts