スポンサーリンク
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)






