3

Django初心者です。ドキュメントに従って、私が構築している公開サイトのホームページから管理サイトへのリンクを取得するために、次のことを試みています。

{% load admin_urls %}
<p>Go to the <a href="{% url opts|admin_urlname:'add' %}">admin</a>.</p>

エラーが発生しています:

NoReverseMatch at /
u'opts|admin_urlname' is not a registered namespace

URL を適切に含めています。

    url(r'^admin/', include(admin.site.urls)),

私のテンプレート ローダーは正しい順序になっています。

これについていくつかの異なるバリエーションを試しましたが、それらはすべて名前空間エラーをスローします。

何か案は?ありがとう!

4

3 に答える 3

5

Daniel Roseman / Django のドキュメントを 1 つの画面に表示し、私のコードを別の画面に表示して 30 分後、次の簡単な解決策を思いつきました。

views.pyで、モデルの _meta を使用して opts コンテキストを追加します (必要な と が含まれますapp_label) model_name

class YourModelDetailView(DetailView):
    def get_context_data(self, **kwargs):
        context = super(YourModelDetailView, self).get_context_data(**kwargs)
        context["opts"] = YourModel._meta
        return context

テンプレートで:

{% url opts|admin_urlname:'change' object.pk %}

変更は、リバース管理 URLのドキュメント ページの任意のアクションにすることができます。

于 2012-10-17T08:05:41.623 に答える
3

上記の回答は私が呼び出していたコードについて役に立ちましたが、もっと簡単な方法があります。代わりにこれを使用しています:

{% url 'admin:index' %}

これは、次のようなカスタム管理ビューでも機能します。

{% url 'admin:myapp_mymodel_<keyword>' object.id %}

keywordは、ここにリストされている名前付きパラメーター(つまりaddchangedelete) からのものです。

于 2012-10-23T13:54:08.887 に答える
0

ほとんどの場合、開発バージョンではなく、リリースされた 1.4 バージョンを使用しています。そのバージョンのドキュメントが示すように、{% load url from future %}その構文を使用する前に使用する必要があります。

于 2012-10-14T16:59:02.433 に答える