https://qiita.com/okoppe8/items/54eb105c9c94c0960f14
上記のサイトを参考にwebアプリを作ろうとしています。
succes_urlで指定したurl(href="#")、本来であれば、register:top に移動するはずなのですが、保存ボタンを押してもURLに#がつくだけで同じページのままになりました。
さらに、未入力で保存するボタンを押した場合エラーが出るはずなのですがそれも出ないです。
何が原因かわかりますでしょうか?
models.py
python
1class Item(models.Model): 2 3 SEX_CHOICES = ( 4 (1, '男性'), 5 (2, '女性'), 6 ) 7 8 name = models.CharField( 9 verbose_name='名前', 10 max_length=200, 11 ) 12 age = models.IntegerField( 13 verbose_name='年齢', 14 validators=[validators.MinValueValidator(1)], 15 blank=True, 16 null=True, 17 ) 18 sex = models.IntegerField( 19 verbose_name='性別', 20 choices=SEX_CHOICES, 21 default=1 22 ) 23 memo = models.TextField( 24 verbose_name='備考', 25 max_length=300, 26 blank=True, 27 null=True, 28 ) 29 created_at = models.DateTimeField( 30 verbose_name='登録日', 31 auto_now_add=True 32 ) 33 34 # 管理サイト上の表示設定 35 def __str__(self): 36 return self.name 37 38 class Meta: 39 verbose_name = 'アイテム' 40 verbose_name_plural = 'アイテム'
views.py
python
1class ItemFilterView(LoginRequiredMixin, FilterView): 2 model = Item 3 4 # デフォルトの並び順を新しい順とする 5 queryset = Item.objects.all().order_by('-created_at') 6 7 # django-filter用設定 8 filterset_class = ItemFilter 9 strict = False 10 11 # 1ページあたりの表示件数 12 paginate_by = 10 13 14 # 検索条件をセッションに保存する 15 def get(self, request, **kwargs): 16 if request.GET: 17 request.session['query'] = request.GET 18 else: 19 request.GET = request.GET.copy() 20 if 'query' in request.session.keys(): 21 for key in request.session['query'].keys(): 22 request.GET[key] = request.session['query'][key] 23 24 return super().get(request, **kwargs) 25 26 27# 詳細画面 28class ItemDetailView(LoginRequiredMixin, DetailView): 29 model = Item 30 31 32# 登録画面 33class ItemCreateView(LoginRequiredMixin, CreateView): 34 model = Item 35 form_class = ItemForm 36 success_url = reverse_lazy('register:top') 37 38 39# 更新画面 40class ItemUpdateView(LoginRequiredMixin, UpdateView): 41 model = Item 42 form_class = ItemForm 43 success_url = reverse_lazy('register:top') 44 45 46# 削除画面 47class ItemDeleteView(LoginRequiredMixin, DeleteView): 48 model = Item 49 success_url = reverse_lazy('register:top')
urls.py
python
1 path('', views.ItemFilterView.as_view(), name='top'), 2 path('create/', views.ItemCreateView.as_view(), name='create'), 3 path('update/<int:pk>/', views.ItemUpdateView.as_view(), name='update'), 4 path('delete/<int:pk>/', views.ItemDeleteView.as_view(), name='delete'),
forms.py
python
1class ItemForm(forms.ModelForm): 2 3 class Meta: 4 model = Item 5 fields = ('name','age','sex','memo') 6 widgets = { 7 'name': forms.TextInput(attrs={'placeholder':'記入例:山田 太郎'}), 8 'age': forms.NumberInput(attrs={'min':1}), 9 'sex': forms.RadioSelect(), 10 'memo': forms.Textarea(attrs={'rows':4}), 11 }
item_form.html
html
1{% extends "register/base.html" %} 2{% load crispy_forms_tags %} 3{% block content %} 4{{ form.certifications.errors }} 5<div class="container"> 6 <div class="row"> 7 <div class="col-12"> 8 <h2 class="text-center">データ入力</h2> 9 </div> 10 </div> 11 <div class="row"> 12 <div class="col-12"> 13 <div class="float-right"> 14 <a class="btn btn-outline-secondary" href="{% url 'register:top' %}">戻る</a> 15 <a class="btn btn-outline-secondary save" href="#">保存</a> 16 </div> 17 </div> 18 </div> 19 <div class="row"> 20 <div class="col-12"> 21 <form method="post" id="myform"> 22 {%crispy form%} 23 </form> 24 </div> 25 </div> 26 <div class="row"> 27 <div class="col-12"> 28 <div class="float-right"> 29 <a class="btn btn-outline-secondary" href="{% url 'register:top' %}">戻る</a> 30 <a class="btn btn-outline-secondary save" href="#">保存</a> 31 </div> 32 </div> 33 </div> 34</div> 35{% endblock %}
views。pyには上記のコードの他にユーザーログイン情報などに(detailview,updateview)などを使っているのですが
エラーが出る原因になりうるでしょうか?
必要な物があれば追記致しますのでよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。