前提・実現したいこと
簡単な掲示板アプリを作成しているのですが、写真のトップページ(http://0.0.0.0:8000/)から、コメント作成フォーム(http://0.0.0.0:8000/1/comment/)に移行しようとすると下記のエラー画面になってしまいます。
似たような質問が過去になされていたので、これを参考にDBの消去と再migrationを行ったのですがその後も同様のエラーが発生してしまいます。解決法は考えられますでしょうか?
発生している問題・エラーメッセージ
該当のソースコード
以下、関係ありそうなコードを列挙します。
必要なものがあればおっしゃっていただけると幸いです。
models.py(一部抜粋) ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー class Comment(models.Model): class Meta(object): #作成されるテーブル名を指定 db_table = 'comments' """コメント.""" name = models.CharField(max_length=255, blank=True) text = models.TextField() #target = models.ForeignKey(Posts, on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True) #is_publick = models.BooleanField(default=False) def get_absolute_url(self): return reverse('index')
views.py(一部抜粋) ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー class CommentView(CreateView): template_name = 'posts/comment.html' form_class = CommentCreateForm def post(self, request, *args, **kwargs): # formに書いた内容を格納する form = CommentCreateForm(request.POST) # 保存する前に一旦取り出す post = form.save(commit=False) # 保存 post.save() # indexのviewに移動 return redirect(to='index') def form_valid(self, form): #バリデーションに通ったとき messages.success(self.request, "保存しました") return super().form_valid(form) def form_invalid(self, form): #バリデーションに失敗した時 messages.warning(self.request, "保存できませんでした") return super().form_invalid(form) comment = CommentView.as_view()
urls.py(一部抜粋) ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー urlpatterns = [ path('', views.index, name='index'), path('write/', views.write, name='write'), path('<int:pk>/comment/', views.comment, name='comment'), ]
post.html(トップページ) ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー {% extends "base.html" %} {% block page_title %}post{% endblock %} {% block title %}Posts{% endblock %} {% block content %} {% for post in posts %} <div class="post"> <p class="text">{{ post.text }}</p> {{ post.created_at }} <hr> <a class="btn btn-default" href="{% url 'comment' pk=post.pk %}">Add comment</a> {% for comment in comments %} <div class="comment"> <div class="date">{{ comment.created_at }}</div> <strong>{{ comment.name }}</strong> <p>{{ comment.text }}</p> </div> {% empty %} <p>No comments here yet :(</p> {% endfor %} </div> {% endfor %} {% endblock %}
comment.html(コメント作成ページ) ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー {% extends "base.html" %} {% block page_title %}Comment{% endblock %} {% block title %}Comment{% endblock %} {% block content %} <h1>New comment</h1> <form method="POST" class="post-form" action="{% url 'comment' pk %}"> {% csrf_token %} {{ form.as_p }} <button type="submit" class="button">投稿</button> </form> {% endblock %}
補足情報(FW/ツールのバージョンなど)
python 3.6
Django 2.2
docker 2.2
あなたの回答
tips
プレビュー