LoginSignup
0
1

More than 3 years have passed since last update.

[Python] Django で Web アプリに挑戦してみた(Form 作成編)

Last updated at Posted at 2020-07-24

はじめに

先日、「connpass - エンジニアをつなぐIT勉強会支援プラットフォーム」で Django の勉強会イベントに参加してきました!!

そこから Django の面白さ・楽しさに気付いたので(昔から若干の興味も持ってました)独学で勉強してようやく Form の作成ができました。。。(これだけで一苦労です)

Form 完成画像

User 登録画面

コードの全ては github にありますので是非ご覧下さい

Django について

DjangoとはPythonでWebアプリを開発する際に使うWebフレームワークです。勉強には Python3 Django 超入門 を使いました(結構オススメできます)

Django のメリット

大規模

Webアプリ開発でよく使われる、「ユーザー認証」「管理画面」「サイトの案内ぺージ」「RSSフィード」など、よく使われる機能が全て詰めこまれています!!

別途ソフトなど不要

Python の環境が用意できれば、その場で組み込み利用が可能です

Form 作成用のコード

forms.py
#!/usr/bin/env python3
from django import forms

class DailyForm(forms.Form):

    name = forms.CharField(label="name",
                           widget=forms.TextInput(
                               attrs={"class": "form-control"}))
    password = forms.CharField(label="password",
                               widget=forms.PasswordInput(
                                   attrs={"class": "form-control"}))

Django 側の処理として widget の作成を forms.py で行いました。

この widget を views.py で呼び出そうと思います。

因みに DailyForm クラスが [はじめに] の写真の上部の部分、RegisterForm クラスが [はじめに] の写真の下部の部分に相当してます。

views.py
class DiaryView(TemplateView):
    def __init__(self):
        self.data = ActiveUser.objects.all()

        self.params = {
            "title": "Welcome to Diary Application Form",
            "message": "Input your data",
            "form": DailyForm(),
            "data": self.data
        }

    def get(self, request):
        return render(request, "***", self.params)

    def post(self, request):
        if(request.POST["name"] == "***" and request.POST["password"] == "***"):
            template = loader.get_template('***')
            return HttpResponse(template.render(None, request))
        return render(request, "***", self.params)

views.py の中で先程作成した widget を self.params として HTML に渡します。(コードの一部です。全コードは github にあります)

後は、HTML で Form を作成するだけです!!(HTML,CSS の知識なさすぎて辛いです。。。)

※追記(2020/8/10)
JavaScript のコードも追加で github に挙げています。

実際に動かしてみた

プログラムがついに完成しました!
さあ、プログラムがちゃんと動くか試してみます(デバッグしながらコード書いてるので、動くのは当たり前なんですけどね)

下記のコマンドを打つと
$ python manage.py runserver

Starting development server at http://127.0.0.1:8000/
とでてきました。早速 Firefox で動かしてみます。すると最初の写真のように動作してます!!

まとめ

python には豊富なライブラリがありますがその中でも Django は簡単に Web 開発などが可能なので皆さんも遊んでみてはいかがでしょうか??

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1