Djangoでコードを書かずにお問い合わせフォームを作成しデータを保存する方法
Djangoではお問い合わせフォームを簡単に作成できますが、実際にはフォームの定義、ビューの作成、モデルの設計、さらにAdminへのモデル登録など、多くの作業を管理する必要があります。
本記事では、事前に用意されたパッケージ「django-contactforms」を活用し、あらかじめ定義されたモデルへデータを自動保存するお問い合わせフォームの作成方法をご紹介します。models.py や views.py にコードを書くことなく、独自のHTMLも最小限の記述で実装できる点が大きな魅力です。それでは早速始めましょう。
実装手順
まず、Djangoプロジェクトとアプリを作成しておいてください。
1. パッケージのインストール
以下のコマンドで django-contactforms パッケージをインストールします。
pip install django-contactforms
2. settings.py の設定
次に、settings.py の INSTALLED_APPS に以下の行を追加します。
INSTALLED_APPS += ["contactforms"]
このモジュールと、作成したアプリ名を INSTALLED_APPS に忘れずに登録してください。
3. プロジェクト側の urls.py
プロジェクトの urls.py に以下のようにルーティングを定義します。
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('contactforms.urls')),
path("aftercontact", include('MyForm.urls'))
]ここでは2つのURLエンドポイントを用意しています。1つ目はお問い合わせフォームを表示するためのもので、2つ目はフォーム送信後のリダイレクト先です。
4. アプリ側の urls.py
アプリの urls.py は以下のとおりです。
from django.urls import path, include
from . import views
urlpatterns = [
path('', views.home, name="home"),
]ここでは、お問い合わせフォームの入力完了後に表示するHTMLをレンダリングするためのルートを定義しています。
5. views.py の作成
views.py はシンプルに以下のように記述します。
from django.shortcuts import render
# Create your views here.
def home(request):
return render(request, "home.html")ここで送信後のページとなるHTMLをレンダリングしています。
6. テンプレートの作成
続いて、アプリディレクトリ内に「templates」フォルダを作成します。その中にさらに「contact」フォルダを作り、その中に contact.html というファイルを配置してください。contact.html には以下のコードを記述します。
<!DOCTYPE html>
<html>
<body>
<div class="row">
<form action="{% url 'contact' %}" method="post">
<h3>Send a Message</h3>
{% csrf_token %}
<div class="form-group">
{% if messages %}
{% for message in messages %}
<span{% if message.tags %} class="{{ message.tags }}"{% endif %} style="color: green">
{{ message }}
</span>
{% endfor %}
{% endif %}
</div>
<div class="form-group">
{{ forms.name }}
</div>
<div class="form-group">
{{ forms.email }}
</div>
<div class="form-group">
{{ forms.subject }}
</div>
<div class="form-group">
{{ forms.message }}
</div>
<button class="btn btnprimary" type="submit">Submit</button>
</form>
</div>
</body>
</html>これが「/」エンドポイントで表示されるフォームです。パッケージが提供するフォームフィールド(名前・メールアドレス・件名・メッセージ)をそのまま読み込んで表示しているだけで、フォームクラスを自作する必要はありません。また、messagesフレームワークを使うことで、送信成功時の通知も簡単に表示できます。
次に、templates フォルダ直下(contactフォルダの中ではなく)に home.html を作成し、以下のコードを記述してください。
<!DOCTYPE html>
<html>
<head><title>tut</title></head>
<body>
<h3>Successfull</h3>
</body>
</html>実行結果
サーバーを起動してトップページにアクセスすると、お問い合わせフォームが表示されます。フォームに入力して送信すると、データはパッケージが内部で持つモデルに自動的に保存され、リダイレクト先として home.html がレンダリングされます。

このように django-contactforms を使えば、モデル定義やビューのロジックをほぼ書かずにお問い合わせ機能を実装でき、開発工数を大幅に削減できます。小規模なサイトやプロトタイプ開発において特に有用なアプローチです。
-
ユーザーフォーム不要!Excelでデータ入力フォームを作成する方法
Excelの便利な活用法のひとつがデータ入力フォームの作成です。通常、データ入力フォームはVBAのユーザーフォームを使って作成しますが、プログラミングに抵抗がある方も多いのではないでしょうか。実は、VBAやユーザーフォームを使わずに、Excel標準機能だけで簡単にデータ入力フォームを作成できます。 この記事では、分かりやすい手順と画像付きで、その方法をご紹介します。 クイックアクセスツールバーに「フォーム」コマンドを追加する方法 まずは、今回使用するサンプルデータをご覧ください。ここでは、ベストセラー書籍の出版年と価格のデータセットを使用します。 Excelでデータ入力フォームを作成するには
-
クラウドストレージとは?データの保存と転送におけるイノベーションを徹底解説
人類は古来より、自らの脳細胞以外の外部媒体に頼って、情報を後世に伝えたり、大切な記憶を保存したりしてきました。湿った粘土や洞窟の壁への彫刻を用いていた初期のネアンデルタール人の時代から、ヒエログリフで情報を記録・伝達していた古代エジプト人の時代へ。おそらく、こうした人類に生まれつき備わった特性こそが、IT業界における記録媒体の進化を牽引してきたのでしょう。 1725年のパンチカードの時代から、フロッピーディスク、CDやDVD、ハードディスク、そしてついには「クラウド」という目に見えない存在まで、私たちは長い道のりを歩んできました。その大きな原動力となったのが、記録メディアが遂げた飛躍的な技術的