Djangoは初学者で、勉強しながらWebアプリ開発をしています。
旅行サイトの検索条件を打ち込むようなページを作っているのですが、formを作成し、テンプレートに反映させようとしたところ、下の画像のように上手くテンプレートにformを引っ張ってこれません。
コードに間違いはないとは思うのですが、、試行錯誤しながら修正してますが改善ならず。。
間違っている箇所があればご指摘いただけると幸いです。
どなたかご教授よろしくお願いいたしますm(_ _)m
各コードは以下です↓
django
1#travel/travel_app/forms.py 2 ※PEOPLE,GENDERはクラス作成前に変数定義しています。 3 4from django import forms 5 6class ConditionForm(forms.Form): 7 #start = '固定' 8 9 goal = forms.CharField(label='目的地', 10 max_length=30, required=True,) 11 12 people = forms.ChoiceField(label='人数', choices=PEOPLE, 13 widget=forms.Select, 14 required=True, 15 help_text='※必須',) 16 17 age = forms.CharField(label='年齢',required=True, 18 help_text ='※必須',) 19 20 gender = forms.ChoiceField(label='性別',choices=GENDER, 21 widget=forms.Select, required=True, 22 help_text ='※必須',) 23 24 def clean_people(): 25 cleaned_data = super().clean_people() 26 people = cleaned_data.get('people') 27 if not people: 28 raise forms.ValidationError('入力してください。') 29 return cleaned_data 30 31 def clean_age(): 32 cleaned_data = super().clean_age() 33 age = cleaned_data.get('age') 34 if not age: 35 raise forms.ValidationError('入力してください。') 36 return cleaned_data 37 38 def clean_gender(): 39 cleaned_data = super().clean_gender() 40 gender = cleaned_data.get('gender') 41 if not gender: 42 raise forms.ValidationError('入力してください。') 43 return cleaned_data
Django
1#travel/travel_app/views.py 2 3from django.shortcuts import render, redirect 4from django.http.response import HttpResponse 5from . import forms 6from django.template.response import TemplateResponse 7from .forms import ConditionForm 8 9def index(request): 10 return TemplateResponse(request, 'travel/condition.html', 11 {'index': index},) 12 13def condition_form(request): 14 form = ConditionForm(request.POST) 15 if request.method == 'POST': 16 if form.is_valid(): 17 form.save() 18 19 context = {'form' : form} 20 return render(request, 'travel/condition.html', context)
Django
1#travel_app/templates/travel/condition.html 2 3<!DOCTYPE html> 4<html> 5<head> 6 <title> 7 {{ index }}<br> 8 </title> 9</head> 10<body> 11 <form action='/form/' method='POST'> 12 {% csrf_token %} 13 {{ form.as_p }}<br> 14 <input type="submit" value="送信"> 15 </form> 16</body> 17</html>
Django
1#travel/urls.py 2 3from django.contrib import admin 4from django.urls import path, include 5from django.conf.urls import url 6 7urlpatterns = [ 8 path('admin/', admin.site.urls), 9 path('travel_app/', include('travel_app.urls')),]
Django
1#travel_app/urls.py 2 3from django.urls import path 4from . import views 5 6urlpatterns = [ 7 path('', views.index, name='index'), 8 path('condition_form/', views.condition_form, name='form'),]