2011-12-07 11 views
2

私はdjangoサイトを持っています。すべての標準サイトと同様に、URLConfsを使用してURLをビューに関連付けます。しかし、それに加えて、データベースのデータから動的に生成するいくつかのURL設定があります。私はそれが好きであるようにすべてが動作します。実行中のサイトのURLConfsを動的にリロードする

コードからサイトが実行されている間にすべてのURLConfsをリロードすることはできますか?誰かがデータベースを更新し、サイト内のいくつかのURLを変更する場合、私はすべてのURLの「再発見」をトリガーしたいと思います。これにより、私のコードはDB内のデータからURLを動的に再作成します。

現在、生成されたURLはURL階層内のどこにでも置くことができます。それらは、/ dynamic/などのように、接頭辞の下にすべてあるわけではありません。しかし、これが絶対に必要なことを行う必要がある場合は、すべての動的URLを1つの接頭辞の下に置くことができます。

URLの再検出が行われている間に、サイトのダウンタイムが発生することがあります。

すべてのURLConfをこのように再ロードする方法を教えてください。

+0

私はTexas Tribuneで全く同じことをしなければなりませんでした。リダイレクトフレームワークを使用して、古いURLスキームをサポートし、新しいURLスキームを実装しました。これは魅力的でした。あなたのニーズに合ったものではないかもしれませんが、あなたにはいくつかのアイデアがあります。 – Brandon

+0

古いURLを維持して新しいURLにリダイレクトする必要はありません。私の問題はもっと簡単だと思います。誰かが新しいURLに対応する新しいdbエントリを追加すると、どのようにURLConfsをリロードしますか?現在、私はDBからurlパターンを作成するurl.pyファイルを持っています。コードからすべてのURLパターンの再ロードをどのようにトリガーしますか? –

+0

Djangoがアクセスするたびに呼び出されるgetterを使用して、urlパターンをプロパティにする方法はありますか? –

答えて

5

あなたの質問は、ほとんどのDjangoプログラマーが受け入れることを前提にしています。つまり、データベースからURLを動的に作成するか、作成する必要があるということです。あなたがそれをしているなら、それは間違っている。

あなたのURLパターンはデータではなくコードの一部です。明らかに、URL自体はパターンとデータを組み合わせることによって形成されます。例えば、foo/<slug>/bar/ですが、URLプロセッサではなくビューによって解決されるため、新しいスラッグが追加されたときにリロードする必要はありません。

+0

私はDanielに同意します。トリビューンでさえ、私たちは動的にパターンを生成しませんでした。それらはurls.pyで定義されていました。ダニエル+1。 – Brandon

+1

私はDjangoが設定したパラダイムに従わないことを理解しています。しかし、現実世界の要件は次のようなものです。ビジネスユーザーは、新しいページを動的に編集したり(まれに)追加することはできません。 2.ページはサイト階層内のどこにでも置くことができるURLパスを持っています。3. URLはSEOに優しくなければなりません。/ dyn/beの後のすべてが/ dyn/aboutus /の代わりにprefer/aboutus /スラグ)。 –

+0

flatpagesアプリケーションは私に必要なものを私に提供しますが、カスタム機能のいくつかが欠けていて、URLを名前で参照することはできません。何かを妥協する必要があることがわかります。さて、私が間違っていることを念頭に置いて、サイトが初期化された後、URL confからURLの再生成をトリガーすることは可能でしょうか? –

関連する問題