NataChike
@NataChike

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Djangoでurl内の"/"(スラッシュ)の誤認を防ぎたい

Q&A

Closed

解決したいこと

Djangoで商品のレビュー一覧を表示するWebアプリを作っています。
商品キーワードを入力し、それに合致する商品一覧を表示するページに飛ぶ際にエラーが発生しました。
解決方法を教えてください。
このエラーはurl内に商品名に含まれている"/"(スラッシュ)がDjango側で誤認されているからエラーが発生していると考えています。

発生している問題・エラー

NoReverseMatch at /item/search/
Reverse for 'item_review' with arguments '('【送料無料】<br>ELECOM EHP-C3520BUD ステレオヘッドホン/ カナルタイプ/ ディープブルー<br>【在庫目安:お取り寄せ】\x91 AV機器 カナル型ヘッドホン カナル型ヘッドフォン カナル型 カナル ヘッドフォン ヘッドホン イヤフォン イヤホン テレビ 音楽 ラジオ 音質',)' not found. 1 pattern(s) tried: ['item/(?P<item_name>[^/]+)/item_review/\\Z']

該当するソースコード

    path('<str:item_name>/item_review/', views.item_review, name='item_review'),

自分で試したこと

商品名内にある"/"を消して再度実行するとエラーは起こりませんでした。
そのため、"/"を誤認しないようにすれば解決できると考えます。
その方法を教えてほしいです。

0

2Answer

Django は触ったこともない自分がレスするのもなんですか、レスが付かないようなので一言。ハズレだったらスミマセン。

URL に情報を含めて送信していて、その情報にスラッシュが含まれるのでうまくいかないということのようですが、であれば、URL に情報を含めるのは止めて、form に含めて post するということはできないのでしょうか?

それができないのであれば、url 書き換えで対応するとかはどうでしょう?

1Like

Comments

  1. @NataChike

    Questioner

    レスありがとうございます。
    fromに含めてpostするという手段は自分もできるかどうかわからないため、
    今回はとりあえず、スラッシュを含むものはurlに含めないというfilterを掛けるという方法で対処しました。
    時間に余裕が出来たら、そちらの方法を試してみようと思います。(そちらの方法の方が全商品を対象にすることが出来ますもんね)

同じく、Djangoに触れたことがないので恐縮ですが、
item_reviewの中身を一度変換してみたらどうにかなりませんか?

ただ、「何かしらの処理時に特殊記号が埋め込まれている状態」を
エラーで弾く、又は別の処理に移行しない場合、セキュリティリスクが高くなることを
理解した上で使用してください。

0Like

Comments

  1. @NataChike

    Questioner

    レスありがとうございます。
    そちらのurl先のページを見てみましたが、情報知識があまりないため、理解するのに時間がかかりそうですが、今回のエラーに関して参考になりそうな気がします!
    今回はとりあえず、スラッシュを含むものはurlに含まない様filterを掛けることで対処しました。時間に余裕が出来たら、そちらの方法を試そうと思います。

Your answer might help someone💌