Django フラットページ (またはフラットページ + 翻訳である多言語 ng) のリバーシブルな名前付き URL を使用する方法はありますか?
そうでない場合、管理者から編集可能なページの名前付き URL を持つことができる同様のアプリはありますか? (そして、巨大な CMS は避けたいと思います。)
編集:質問の詳細な説明と明確化については、以下の回答のコメントを参照してください。
Django フラットページ (またはフラットページ + 翻訳である多言語 ng) のリバーシブルな名前付き URL を使用する方法はありますか?
そうでない場合、管理者から編集可能なページの名前付き URL を持つことができる同様のアプリはありますか? (そして、巨大な CMS は避けたいと思います。)
編集:質問の詳細な説明と明確化については、以下の回答のコメントを参照してください。
ルート URLConf の一番最後に、
(r'^(?P<url>.*)$', 'django.contrib.flatpages.views.flatpage'),
{% url %}
これで、タグをビュー名flatpage
とキーワード引数とともに使用できるようになりましたurl
。reverse()
ビューで関数を使用することもできます。
{% url %}テンプレート タグは URLconf で機能しますが、フラットページは存在しない URL を処理します。
本当にフラットページを URL に逆にしたい場合は、独自の {% flatpage_url %} タグを作成する必要があると思います。これは次のようになります。
@register.simple_tag
def flatpage_url(self, name):
return FlatPage.objects.get({param}=name).url
-- ここで、{param}はFlatPage モデル フィールドの 1 つです。
また、{% url %}と{% flatpageurl %}タグを一緒にマージして、FlatPage が見つからない場合に後者がreverse()にフォールバックするようにすることもできます (reverse() は{% url %}が使用するものです)。
提案された解決策は、基本的にテンプレートに URL をハードコーディングするのと同じではありませんか? href="URL" で URL をハードコーディングするのと {% url URL %} でハードコーディングするのとの違いは何ですか?
より良い解決策が見つかると思います: How can I get the reverse url for a Django Flatpages template (bufhが提案)。
これを実現する最適な方法は、FlatPage モデルに「名前」フィールドを追加することだと思います。