https://docs.render.com/deploy-django#creating-a-new-django-project
上のRenderの記事に沿って進めてみます。
最初に作業用のリポジトリを用意します。
https://github.com/kazweda/myrender
git clone https://github.com/kazweda/myrender
作業手順を随時issue化して commit, push しておけば、中断しても後で再開しやすくなります。
python環境を作成
python3 -m venv venv
source venv/bin/activate
Djangoをインストールしてプロジェクトを作成
pip install Django==5.0.7
pip freeze > requirements.txt
django-admin startproject myrender .
起動してみます。
python manage.py runserver
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
migrationを実行
python manage.py makemigrations
python manage.py migrate
あらためて起動してみます。
python manage.py runserver
ブラウザで確認
http://127.0.0.1:8000/
ランディングページを作成
python manage.py startapp homepage
このあたりでGitHubにコミットしておきます。
git add .
git commit -m "first commit."
git push
settings.pyにHomepageConfigを追加
INSTALLED_APPS = [
'homepage.apps.HomepageConfig',
'django.contrib.admin',
...
]
テンプレートを作成
homepage/templates/homepage/index.html
(元の記事を参照してください)
(省略)
homepage/view.pyを編集
def index(request):
return render(request, 'homepage/index.html', {})
homepage/urls.pyを作成
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
プロジェクトのurlsに反映する。
myrender/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('homepage.urls')),
]
Renderのバナーをダウンロードして保存。
homepage/static/homepage/render-banner.webp
index.htmlにバナーを組み込む。
{% load static %}
...
<body>
<header class="container mt-4 mb-4">
<a href="https://render.com">
<img src="{% static "homepage/render-banner.webp" %}" alt="Homepage banner" class="mw-100">
</a>
</header>
動作確認してみます。
環境変数の設定
.env
DEBUG=True
SECRET_KEY=your_secret_key_here
ALLOWED_HOSTS=['localhost', '127.0.0.1']
settings.py
DEBUG = os.environ.get('DEBUG') == 'True'
SECRET_KEY = os.environ.get('SECRET_KEY')
ALLOWED_HOSTS = os.environ.get('ALLOWED_HOSTS')
今回はここまでにします。(続きはこちら)