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

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

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

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1103閲覧

NoReverseMatchを解決したい

harukabane

総合スコア1

Django

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/06/23 23:05

前提・実現したいこと

Djangoを用いて、保存されたデータを更新するWebFormを作成したいが、
NoReverseMatchになってしまい、
Webでいろいろ検索しても基本的な部分の修正のみで解決に至らなかった。

Djangoを使い始めて2週間程度なので、頓珍漢なことをして時間を無駄にしないよう、
質問させていただく。

解決に必要な情報等あれば、言ってください。

発生している問題・エラーメッセージ

作成したWebFormを読み込むと、NoReverseMatchになる。

NoReverseMatch at /trans_request_edit/1/ Reverse for 'trans_request_edit' with keyword arguments '{'PK': ''}' not found. 1 pattern(s) tried: ['trans_request/edit/(?P<PK>[0-9]+)/$']

該当のソースコード

開発環境
Python 3.8.0
Django 2, 1, 15
SQL Server 2017 Express
Google Chrome

##urls.py from django.urls import path from . import views urlpatterns = [ path('', views.trans_request_list, name = 'trans_request_list'), path('trans_request/<int:PK>/', views.trans_request_detail, name = 'trans_request_detail'), path('trans_request/new', views.trans_request_new, name='trans_request_new'), path('trans_request/edit/<int:PK>/', views.trans_request_edit, name='trans_request_edit'), ]
##views.py def trans_request_edit(request, PK): requests = get_object_or_404(Request, pk=PK) form = RequestForm_Edit(instance=requests) return render(request, 'trans_request/trans_request_edit.html', {'form' : form, 'requests' : requests})
##trans_request_edit.html {% extends 'trans_request/base.html' %} {% block content %} <h2>Edit request</h2> <form action="{% url 'trans_request_edit' PK=request.serial_no %}" method="POST">{% csrf_token %} {{ form.as_p}} <button type="submit" class="save btn btn-default">Save</button> </form> {% endblock %}

試したこと

views.py の
form = RequestForm_Edit(instance=requests)

form = RequestForm_Edit()
に置き換えたがエラー解消されず。

url_patterns の
'trans_request/edit/int:PK/'

'trans_request_edit/int:PK/'
に置き換えたがエラー解消されず。

補足情報(FW/ツールのバージョンなど)

本Form作成にあたり参考にしたサイト

DjangoでCRUD
https://qiita.com/zaburo/items/ab7f0eeeaec0e60d6b92

メモの削除と更新 - Djangoの学習ができるチュートリアルサイト
https://djangobrothers.com/tutorials/memo_app/delete_edit/

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

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

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

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

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

guest

回答1

0

ベストアンサー

Python

1# views.py 2def trans_request_edit(request, PK): 3 requests = get_object_or_404(Request, pk=PK) 4 form = RequestForm_Edit(instance=requests) 5 return render(request, 'trans_request/trans_request_edit.html', {'form' : form, 'PK' : PK}) 6```で、 7```HTML 8<!-- trans_request_edit.html --> 9<form action="{% url 'trans_request_edit' PK %}" method="POST"> 10```にしたらいけますか?

投稿2020/06/23 23:52

編集2020/06/23 23:53
ForestSeo

総合スコア2722

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

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

ForestSeo

2020/06/23 23:58 編集

ちなみに、 'requests' : requests で request を template に渡しているようですが、 渡さなくても、デフォルトで HTML内で {{requests.user}} とか {{request.POST}} とかのように取得できます。
harukabane

2020/06/24 02:37

ありがとうございます、 指摘の通り、requestsを渡す方法からPKを渡す方法に変更すると しっかり表示できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問