プログラム初心者です。
構成
・ラジオボタン[1,2]
・数字
選択によってshiki1,shiki2を使い出力したいと考えております。
ラジオボタンの1or2によってviews.pyのテンプレートに渡す数字を変えたいのですが、
試行錯誤してもラジオボタンの値が取得できません。
ご教授の程よろしくお願い致します。
html
1<div class="row"> 2 <div class="col-sm"> 3 <h2>追加前</h2> 4 <div class="btn-group btn-group-toggle" data-toggle="buttons" name="time"> 5 <label class="btn btn-light"> 6 <input type="radio" name="options" id="option1" checked>1 7 </label> 8 <label class="btn btn-light"> 9 <input type="radio" name="options" id="option2">2 10 </label> 11 </div> 12 <form method="post"> 13 {% csrf_token %} 14 {% for field in form %} 15 <p> 16 <label>{{ field.label }}</label> 17 {{ field }} 18 </p> 19 {% endfor %} 20 <input type="submit" value="追加" class="btn btn-info" /> 21 </form> 22 </div> 23 </div> 24 <div class="col-sm"> 25 <h2>追加後</h2> 26 <p>{{ new_text }}</p> 27 </div> 28</div>
forms.py
from django import forms from django.core.exceptions import ValidationError widget_numinput = forms.TextInput( attrs={ "class": "form-control", 'type':'number' } ) class TextForm(forms.Form): answer = forms.CharField(label="数字",widget=widget_numinput) # 自動的に呼ばれます。エラーを発生させると簡単に表示できます def clean(self): # djangoもともとのバリデーションを実行してデータを取得 data = super().clean() return data from .models import Post class PostForm(forms.ModelForm): class Meta: model = Post fields = ["title", "body"]
views.py
from django.views.generic.edit import FormView import math from . import forms def shiki1(new): if new <= 20000: new = new elif new >= 20001: new = 40000 return new def shiki2(new): if new <= 20000: new = new*3 elif new >= 20001: new = new*10 return new class Index(FormView): form_class = forms.TextForm template_name = "index.html" # フォームの入力にエラーが無かった場合に呼ばれます def form_valid(self, form): # form.cleaned_dataにフォームの入力内容が入っています data = form.cleaned_data # ここで変換 new_text = int(data["answer"]) new_text = shiki1(new_text) #テンプレートに渡す ctxt = self.get_context_data(new_text=new_text, form=form) return self.render_to_response(ctxt)
あなたの回答
tips
プレビュー