[解決済み】reverse()とは何ですか?)
2022-04-16 07:07:46
質問
Djangoのコードを読んでいると、時々、いくつかのテンプレートに
reverse()
. これが何なのかよくわかりませんが、HttpResponseRedirectと一緒に使われています。どのように、そしていつ、この
reverse()
を使用するのでしょうか?
どのように解決するのですか?
仮に、あなたの
urls.py
では、このように定義されています。
url(r'^foo$', some_view, name='url_name'),
テンプレートでは、このURLを次のように参照することができます。
<!-- django <= 1.4 -->
<a href="{% url url_name %}">link which calls some_view</a>
<!-- django >= 1.5 or with {% load url from future %} in your template -->
<a href="{% url 'url_name' %}">link which calls some_view</a>
としてレンダリングされます。
<a href="/foo/">link which calls some_view</a>
では、同じようなことを
views.py
- 例えば、他の URL を処理する場合 (
/foo/
でなく)他のビューで
some_view
にリダイレクトさせたい場合。
/foo/
(多くの場合、フォームの送信に成功した場合)。
すればいいんじゃない?
return HttpResponseRedirect('/foo/')
しかし、将来的にURLを変更したい場合はどうすればよいのでしょうか?その場合は
urls.py
と
をコード内で参照する必要があります。これは
DRY (Don't Repeat Yourself) (ドリー・リピート・ユアセルフ
の原則と、一箇所で編集するという全体的な考え方 - これは努力すべきことです。
その代わりと言ってはなんですが。
from django.urls import reverse
return HttpResponseRedirect(reverse('url_name'))
これは、プロジェクトで定義されているすべての URL を調べて、URL の名前が
url_name
を返し、実際のURLは
/foo/
.
これは、URLだけをその
name
属性は、URL 自体やそれが参照するビューを変更したい場合、一箇所だけ編集することで可能です -。
urls.py
.
関連
-
[解決済み] Django ランサーバー使用時にデータを印刷する方法
-
[解決済み] Django のビューで 2 つ以上のクエリセットを結合するにはどうすればよいですか?
-
[解決済み] Djangoの "slug "とは何ですか?
-
[解決済み] Djangoのバージョンを確認する方法
-
[解決済み] Django のモデルで on_delete は何をするのですか?
-
[解決済み] pipと要件ファイルを使って、特定のパッケージをアップグレードするにはどうすればよいですか?
-
[解決済み] Django のフォームで、あるフィールドを編集できないように readonly (または disabled) にするにはどうしたらいいですか?
-
[解決済み】djangoのビジネスロジックとデータアクセスの分離
-
[解決済み】Djangoプロジェクトの作業ディレクトリ構造に関するベストプラクティス【終了しました
-
[解決済み] [Djangoで「一括更新」する方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] djangoでDISTINCT個々の列を選択しますか?
-
[解決済み] Django で django-storages と boto3 を使って CreateMultipartUpload オペレーションを呼び出すと AccessDenied になります。
-
[解決済み] Django - 円形モデルのインポートの問題
-
[解決済み] CSRFに失敗しました。CSRFトークンがないか不正確です
-
MultiValueDictKeyError at/add/ エラー解決
-
Pythonが表示される。TypeError: 期待される文字列またはバッファ
-
[解決済み】Djangoのフォームセットにフォームを動的に追加する
-
[解決済み】テンプレートコード内で変数に値を設定するには?
-
[解決済み】Djangoで多対多のフィールドをオプションにするにはどうすればいいですか?
-
[解決済み] Django restフレームワーク、同じModelViewSetで異なるシリアライザーを使用する。