Djangoで掲示板のようなアプリケーションを作成しているのですが、書き込みたい内容を打ち込んだ後に、書き込んだ内容を表示するページに移動するようにしたのですが、ターミナル側に
Method Not Allowed(POST):/post/
Method Not Allowed: /post/
と出てきてしまいます。
どこを修正すればよいでしょうか?
Django
1view.pyのコード 2from django.shortcuts import render 3from django.views.generic import View 4from .form import PostForm 5from.models import Keijiban 6 7# Create your views here. 8class IndexView(View): 9 def get(self,request,*args,**kwargs): 10 queryset = Keijiban.objects.all() 11 return render(request,'keijiban_app/keijiban_app.html',{'submits':queryset}) 12 13index=IndexView.as_view() 14 15class PostView(View): 16 def get(self,request,*args,**kwargs): 17 return render(request,'keijiban_app/post.html',{'form':PostForm}) 18 19 def submit(self,request,*args,**kwargs): 20 form=PostForm(request.POST) 21 submit=form.save(commit=False) 22 submit.save() 23 return redirect('index') 24 25post=PostView.as_view()
Django
1url.pyのコード 2 3from django.contrib import admin 4from django.urls import include,path 5 6urlpatterns = [ 7 path('admin/', admin.site.urls), 8 path('',include('keijiban_app.urls')) 9] 10
Django
1アプリケーションフォルダ(keijiban_app)内のurl.py 2 3from django.urls import path 4from . import views 5 6app_name='keijiban_app' 7urlpatterns=[ 8 path('',views.index,name='index'), 9 path('post/',views.post,name='post'), 10 ]
Django
1書き込みたい内容を打ち込む画面のテンプレート(post.html) 2 3{% extends 'layout.html' %} 4 5{% block pagetitle %}投稿画面{% endblock %} 6{% block title %}投稿画面{% endblock %} 7{% block content %} 8 <form action="{% url 'keijiban_app:post' %}" method="post" > 9 {% csrf_token %} 10 {{form.as_p}} 11 <button type="submit" class="button">投稿する</button> 12 </form> 13{% endblock %}
Django
1書き込んだ内容を表示する画面のテンプレート(keijiban_app.html) 2 3{% extends 'layout.html' %} 4{% block pagettile %}掲示板{% endblock %} 5{% block title %}投稿一覧{% endblock %} 6{% block content %} 7 {% for submit in submits %} 8 <div class="submit"> 9 <p class="title">{{submit.title}}</p> 10 <p class="content">{{submit.content}}</p> 11 </div> 12 {% endfor %} 13{% endblock %}
Spyderで書いているのですが、view.pyの22行目に"undefined name 'redirect'"と表示されています。