

Djangoは初学者で、勉強しながらWebアプリ開発をしています。  
旅行サイトの検索条件を打ち込むようなページを作っているのですが、formを作成し、テンプレートに反映させようとしたところ、下の画像のように上手くテンプレートを引っ張ってこれません。  
どこに問題があるか試行錯誤しながら修正してますが改善ならず。。  
どなたかご教授よろしくお願いいたしますm(_ _)m

# travel/travel_app/forms.py

[code]

    from django import forms
    
    class ConditionForm(forms.Form):
        #start = '固定'
    
        goal = forms.CharField(label='目的地', max_length=30, required=True,)
    
        people = forms.ChoiceField(label='人数', choices=PEOPLE,
                                   widget=forms.Select, required=True,
                                   help_text='※必須',)
    
        age = forms.CharField(label='年齢',required=True,
                              help_text ='※必須',)
    
        sex = forms.ChoiceField(label='性別',choices=SEX,
                                widget=forms.Select, required=True,
                                help_text ='※必須',)
    
        def clean_people():
            cleaned_data = super().clean_people()
            people = cleaned_data.get('people')
            if not people:
                raise forms.ValidationError('入力してください。')
            return cleaned_data
    
        def clean_age():
            cleaned_data = super().clean_age()
            people = cleaned_data.get('age')
            if not age:
                raise forms.ValidationError('入力してください。')
            return cleaned_data
    
        def clean_sex():
            cleaned_data = super().clean_sex()
            sex = cleaned_data.get('sex')
            if not sex:
                raise forms.ValidationError('入力してください。')
            return cleaned_data
    
[/code]

# travel/travel_app/views.py

[code]

    from django.shortcuts import render, redirect
    from django.http.response import HttpResponse
    from . import forms
    from django.template.response import TemplateResponse
    from .forms import ConditionForm
    
    def index(request):
        return TemplateResponse(request, 'travel/condition.html',
                            {'index': index},)
    
    def condition_form(request):
        form = ConditionForm(request.POST)
        if request.method == 'POST':
            if form.is_valid():
                form.save()
    
    context = {'form' : form}
    return render(request, 'travel/condition.html', context)
    
[/code]

# travel_app/templates/travel/condition.html

[code]

    <!DOCTYPE html>
    <html>
    <head>
        <title>
        {{ index }}<br>
        </title>
    </head>
    <body>
        <form action='/form/' method='POST'>
            {% csrf_token %}
            {{ form.as_p }}<br>
            <input type="submit" value="送信">
        </form>
    </body>
    </html>
    
[/code]

# 現在の出力ページ

[![現在の出力ページ](https://i.stack.imgur.com/WTXTt.png)](https://i.stack.imgur.com/WTXTt.png)


CC BY-SA 4.0
2020-05-01T07:44:54.313
66173
2020-05-07T05:21:12.720
2020-05-01T08:18:37.670
3060
39924
question
python3 html django form
Djangoを使っているのですが、formとHTMLの関係でハマりました。。

[code]

    def index(request):
        form = ConditionForm()
        return TemplateResponse(request, 'travel/condition.html',{'index': index, 'form':form})
    
[/code]

`index`メソッドの`return`に`form`をcontextとして渡す必要があるのではないでしょうか？  
おそらく「現在の出力ページ」は`condition_form`ではなく`index`メソッドが返している結果のように見えます。


CC BY-SA 4.0
2020-05-07T05:21:12.720
66373
2020-05-07T05:21:12.720
40030
66173
answer