2011-02-04 15 views
11

私はUbuntu 10.10でDjango 1.2.4を使用しています。管理モジュールのindex.htmlテンプレートをオーバーライドしようとしています。私はこれらを追ってきましたinstructions。私もこのquestionを見ましたが、まだ難しいです。Django管理用テンプレートのオーバーライドが難しい

命令は、テンプレートディレクトリにadminディレクトリを作成するには言う:

templates/ 
    admin/ 
     index.html 

私はindex.htmlに単一のブロックを上書きしたいです。 (本当に、私がやりたいすべてが終わりにいくつかのテキストを追加でブロック全体を貼り付けて、それを変更する/コピーするよりも簡単な方法があります。?)(更新は:{{block.super}}のように見えるが役立つことがあります。)

へ私はオーバーライドてる信号、私は私のindex.htmlの先頭にこれを置く:もちろん、

{% extends "admin/index.html" %} 

こと(端末から)、スタックオーバーフローで結果:

Exception RuntimeError: 'maximum recursion depth exceeded in __subclasscheck__' in <type 'exceptions.RuntimeError'> ignored 

正しいとは何ですかこれを行う方法?リンクされた質問の回答ごとにシンボリックリンクを試しましたが、その結果は次のようになりました:

[email protected]:~/foo$ sudo ln -s /usr/local/lib/python2.6/dist-packages/django/contrib/admin/templates/ django_admin 
[sudo] password for me: 
ln: creating symbolic link `django_admin': Protocol error 

私は間違っていますか?

答えて

1

ないあなたは答えを見つけましたが、あなたはそれを元のindex.htmlページが上書きするものであるとして

{% extends "admin/base_site.html" %} 

{% extends "admin/index.html" %} 

を変更する必要がある場合を確認してください。 Djangoシステムはデフォルトのadminを使用する前にテンプレートフォルダを検索するので、テンプレートの中でadmin/index.htmlが見つかった場合は、extend(つまり再帰エラー)を使って拡張しようとしています。

base_site.htmlも参考にしてテンプレート内でカスタマイズできますが、それはbase.htmlに拡張されています。

/usr/local/lib/python2.6/dist-packages/django/contrib/admin/templates/ 

、あなたは自分自身とのadmin/index.htmlを拡張しているので、再帰エラーがあるの出発点

13

として、テンプレートのフォルダに貼り付けます行うための最善のことは、元のコピーです。

次のいずれかが可能です。

  • は、あなたのtemplates/admin/ディレクトリ全体この中でadmin/index.htmlテンプレートをコピーし、here
を説明するように、それは
  • オーバーライドアプリやモデルごとindex.html、あなたとデフォルトのテンプレートに置き換えられます

    私はこれが質問の後半であることを知っていますが、あなたは知っている、google travel ...

  • 7

    設定を変更します。例えば、余分なテンプレートフォルダ、とPY:

    TEMPLATE_DIRS = (
        # Put strings here, like "/home/html/django_templates". 
        # Always use forward slashes, even on Windows. 
        # Don't forget to use absolute paths, not relative paths. 
        "/home/mysite/webapps/django/myproject/templates", 
        "/home/mysite/webapps/django/lib/python2.7/django/", # extra folder 
    ) 
    

    はその後でmyproject /テンプレート/ adminに、独自のindex.htmlなどを追加します。

    {% extends "contrib/admin/templates/admin/index.html" %} 
    
    {% block branding %} 
        <h1 id="site-name">Administration for TheLittleButtonCo</h1> 
    {% endblock %} 
    

    バリエーションは明らかに、可能です。これは私が余分なパッケージを使用ジャンゴ1.3.1最終

    +0

    クリーンソリューションと呼ばれます! –

    +0

    jdangoのインストールパスをハードコーディングせずにどのように指定しますか? – maazza

    +1

    @maazza: 'import django; os.path.dirname(django .__ファイル__) ' – utapyngo

    関連する問題