DjangoをRenderにdeployしてみる – 準備編(1/2)

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

今回はここまでにします。(続きはこちら