スポンサーリンク
Djangoの学習 機能ごとの書き方の例
【Python】DjangoでBootstrapの導入とベーステンプレートの解説Djangoの学習 Bootstrapの導入
https://prcmyself.com/first-django-step-1
1...
1.ビュー(views.py)
ビューは、関数ベースとクラスベースが存在する。
関数ベースは、自分で書く処理が多い。
クラスベースは、金型が決まっているので簡潔にかける。
クラスベースが主流らしい。
views.pyの書き方とurls.pyの書き方が違うのでその違いを例として下記へ。
関数ベースの例
from django.shortcuts import render from django.http import HttpResponse from django.shortcuts import redirect def index(request): params={ 'title':'index', 'msg' : 'indexページです', } return render(request, 'index.html',params)
from django.urls import path from . import views urlpatterns = [ path('index',views.index,name='index'), ]
クラスベースの例
from django.views import generic class IndexView(generic.TemplateView): template_name = "index.html"
from django.urls import path from . import views urlpatterns = [ path('index',views.IndexView.as_view(),name="index"),
2.フォーム(forms.py)
フォームもビューと同じように2つタイプがある。
一つは、django.forms.Formクラスを継承したやり方。
これは、forms.pyに直接フォームの定義を記載する。
もう一つは、django.forms.ModelFormクラスを継承したやり方。
これば、models.pyに定義を記載して、それを元にフォームを設定するやり方。
django.forms.Form関数ベースの例
from django import forms class ContactForm(forms.Form): name = forms.CharField(label ='お名前', max_length="40", required=False)
from django.shortcuts import render from django.http import HttpResponse from django.shortcuts import redirect def contact(request): params = { 'name':'お名前は?', 'form':ContactForm(), } if (request.method =='POST'): params['name'] = request.POST['name'] + 'さんですね' return render(request,'contact.html',params)
{% extends 'base.html' %} {% block body-contents %} <h2>{{name}}</h2> <form action="{% url 'contact' %}" method="POST"> {% csrf_token %} {{form}} <input type="submit" value='送信'> </form> {% endblock %}
from django.urls import path from . import views urlpatterns = [ path('contact',views.contact,name='contact'), ]
django.forms.ModelFormクラスベースの例
from django import forms from . models import Customer class CustomerForm(forms.ModelForm): class Meta: models = Customer fields = ('name',)
from django.shortcuts import render from django.http import HttpResponse from django.shortcuts import redirect from django.views import generic from .models import Customer class CustomerCreateView(generic.CreateView): model = Customer fields = ('name',) template_name = 'customercreate.html' success_url = 'customer'
{% extends 'base.html' %} {% block body-contents %} <form method='POST'> {% csrf_token %} {{form.as_p}} <button type="submit">登録</button> </form> {% endblock %}
from django.urls import path from . import views urlpatterns = [ path('customercreate',views.CustomerCreateView.as_view(),name='customercreate'), ]
【Python】初めてのDjangoフォームの使い方【クラスベース】Djangoの学習 モデルフォームの使い方 フォームには2つタイプがある。 ちなみに、関数ベースをまとめ...
3.モデル(models.py)
from django.db import models # Create your models here. class Customer(models.Model): name = models.CharField(max_length=255) def __str__(self): return self.name
4.管理画面(admin.py)
from django.contrib import admin from .models import Customer # Register your models here. admin.site.register(Customer)