4

Django フラットページ (またはフラットページ + 翻訳である多言語 ng) のリバーシブルな名前付き URL を使用する方法はありますか?

そうでない場合、管理者から編集可能なページの名前付き URL を持つことができる同様のアプリはありますか? (そして、巨大な CMS は避けたいと思います。)

編集:質問の詳細な説明と明確化については、以下の回答のコメントを参照してください。

4

3 に答える 3

9

ルート URLConf の一番最後に、

(r'^(?P<url>.*)$', 'django.contrib.flatpages.views.flatpage'),

{% url %}これで、タグをビュー名flatpageとキーワード引数とともに使用できるようになりましたurlreverse()ビューで関数を使用することもできます。

于 2010-11-10T04:31:09.233 に答える
5

{% 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 %}が使用するものです)。

編集:

James Bennetの答えがこの質問に対するものであるため、これ以上の賛成票は受け付けません(そして、そのような些細な解決策を見落としたことを恥じています)-賛成票を投じてください。

于 2010-11-08T12:37:24.337 に答える
1

提案された解決策は、基本的にテンプレートに URL をハードコーディングするのと同じではありませんか? href="URL" で URL をハードコーディングするのと {% url URL %} でハードコーディングするのとの違いは何ですか?

より良い解決策が見つかると思います: How can I get the reverse url for a Django Flatpages template (bufhが提案)。

これを実現する最適な方法は、FlatPage モデルに「名前」フィールドを追加することだと思います。

于 2010-11-10T19:43:14.857 に答える