エラー内容
Djangoの CRUD ジェネリックビュー を使っていて、Createをした時に、次のようなエラーがでました!
対処法
リダイレクト先のURLがないとのこと。。。エラーメッセージそのままですが、 get_absolute_url メソッドをモデルに設定するのを忘れていました!
本家ドキュメント参照
myapp/models.py
1 2 3 4 5 6 7 |
class Article(models.Model): title = models.CharField(max_length=255) text = models.TextField() # 追加 def get_absolute_url(self): return reverse('myapp:detail', kwargs={'pk': self.pk}) |
これで、Createアクション後にdetailパスにリダイレクトするようになりました!
idのないindexなどに飛ばす場合は return reverse(‘blog:index’) でOKです。
その他関連ファイルです。
myapp/urls.py
1 2 3 4 5 6 7 8 9 |
app_name = 'myapp' urlpatterns = [ path('', views.IndexView.as_view(), name='index'), path('article/create/', views.CreateView.as_view(), name='create'), path('article/<int:pk>/', views.DetailView.as_view(), name='detail'), path('article/<int:pk>/update/', views.UpdateView.as_view(), name='update'), path('article/<int:pk>/delete/', views.DeleteView.as_view(), name='delete'), ] |
myapp/views.py
1 2 3 4 5 6 |
from django.views import generic class CreateView(LoginRequiredMixin, generic.edit.CreateView): model = Article fields = ['title', 'text'] |
以上です!どなたかの参考になれば、幸いです!😊