質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Q&A

0回答

975閲覧

DjangoでMethod Not Allowed(POST)となってしまう

daaa

総合スコア5

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

0グッド

0クリップ

投稿2020/01/23 07:53

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'"と表示されています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dameo

2020/01/23 18:20

最後の1文しか読んでませんが、 from django.shortcuts import render を from django.shortcuts import render, redirect にした方がいいです
daaa

2020/01/24 05:22

コメントありがとうございます 追記した結果、Spyderではエラーは消えましたが問題は解決できませんでした… おそらく基本的なところでミスしているのだとおもうのですが…
dameo

2020/01/24 17:08

ちゃんとチュートリアルをやって見比べてください 適当に書いたコードでは一生動きません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問