19

Djangoの管理ページのカスタムテンプレートを機能させようとしましたが、失敗しました。djangoのドキュメントと、それがとても簡単なステップであると説明しているいくつかのブログを読みました。

現在のところ、管理ページは機能しますが、CSSまたはテンプレートの私自身の書き直しは機能していません。私のセットアップは次のとおりです

/project_folder/
      manage.py
      settings.py
      urls.py
      __init__.py
      /app/
          views.py
          models.py
          __init__.py
          /templates/
                /admin/
                    base_site.html

urls.pyに私は持っています

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

ログインできないなどの理由で機能します。したがって、/ admin / base_site.htmlがデフォルトのものを上書きすると想定していますが、何もしていません。

誰もがここで何が起こっているのか知っていますか?私はDjangoのチュートリアル/ガイドからそれに従い、いくつかのブログにアクセスして回答があるかどうかを確認しましたが、すべて同じことを言っていました。

編集1:テンプレートディレクトリが正しく設定されています。

TEMPLATE_DIRS = (
    os.path.join(PROJECT_PATH, 'templates/'),
)

これは、サイトの残りの部分がCSSなどのメディアディレクトリで動作しているため、正しく機能します。テンプレートを「受け入れない」ように見えるのは、管理セクションだけです。

4

5 に答える 5

26

了解しました。これはばかげた間違いでしたが、過去2時間はすでにこれで遊んでいました。django.contrib.adminの前にアプリを宣言する必要がありました。それ以外の場合は受け入れません。

于 2012-08-03T10:45:29.623 に答える
23

この演習で行うことに抵抗する必要があるもう1つの間違い。演習では、これを変更するように指示されています...

<h1 id="site-name"><a href="{% url 'admin:index' %}"> {{ site_header|default:_('Django administration') }} </a></h1>

これに...

<h1 id="site-name"><a href="{% url 'admin:index' %}">Polls Administration</a></h1>

文字列定数のみを変更したいという誘惑がありますが、それは正しくありません。つまり、これを行わないでください。見出しは変更されません。

<h1 id="site-name"><a href="{% url 'admin:index' %}"> {{ site_header|default:_('Polls Administration') }} </a></h1>

それは私が犯した間違いであり、それを修正するために細心の注意を払って演習を行う必要がありました。

于 2014-11-23T13:52:56.843 に答える
7

Djangoチュートリアルのパート2でこの手順を実行すると、管理者テンプレートが認識されませんでした。

これが私がそれを解決した方法です:

この回答の情報を使用して、次の値を出力しましたTEMPLATE_DIRS

  1. コマンドラインで、プロジェクトのsettings.pyファイルが存在するディレクトリに移動します(私にとってはこれはR:\jeffy\programming\sandbox\python\django\tutorial\mysite\mysite\
  2. インタラクティブシェルを開始します。python
  3. >>> import settings
  4. >>> settings.TEMPLATE_DIRS、出力['R:\\jeffy\\programming\\sandbox\\python\\django\\tutorial\\mysite\\templates']

したがって、これはこのプロジェクトのテンプレートディレクトリの予想される場所です。adminディレクトリがその中にあり、base_site.htmlファイルがその中にあります。

もう一つの問題は、それが機能していることでしたが、フィールドを変更した<TITLE>だけなので、気づかなかっただけです。(メインヘッダーを変更していると思いました。)

于 2014-07-23T01:42:00.263 に答える
6

Django 1.6.5チュートリアル(https://docs.djangoproject.com/en/1.8/intro/tutorial02/)をウォークスルーするときに同じ問題が発生しましたが、注意深く読んでいないのは間違いであることに気づきました。チュートリアルでは、これをsettings.pyに配置します。

TEMPLATES = [
  {  
      ...
     'DIRS': [os.path.join(BASE_DIR, 'templates')],
      ...
  }

次に、例のように、管理サイトのオーバーライドを配置したいテンプレートフォルダーをアプリの下に配置します。

/project_folder/
      manage.py
      settings.py
      urls.py
      __init__.py
      /app/
          views.py
          models.py
          __init__.py
          /templates/
                /admin/
                    base_site.html

これでは、コメントの1つでDaniel Rosemanが指摘した問題と同様の理由で機能しませんでした。私は、 (私が言ったように)DIR評価していました。project_folder/templates次に、チュートリアルで、templates/adminフォルダーをアプリレベルではなく、プロジェクトレベルに配置することを明示的に示していることに気付きました。

プロジェクトディレクトリ(manage.pyを含むディレクトリ)にテンプレートディレクトリを作成します。テンプレートは、Djangoがアクセスできるファイルシステム上のどこにでも存在できます。(Djangoは、サーバーが実行するすべてのユーザーとして実行されます。)ただし、プロジェクト内にテンプレートを保持することは、従うべき良い規則です。

これを行うことにより、私は次の構造になりました。

/project_folder/
      manage.py
      settings.py
      urls.py
      __init__.py 
      /templates/
          /admin/
              base_site.html
      /app/
          views.py
          models.py
          __init__.py

これにより、すべてが期待どおりに機能しました(管理ページのデフォルトのdjangoテンプレートを上書きできます)。

テンプレートをどこにでも配置し、それらを見つけるようにDjangoを構成できるはずですが、管理サイトはアプリ固有ではなく、プロジェクト全体で利用できるため、メインの管理テンプレートをプロジェクトレベルで配置することは理にかなっているようです。

于 2015-10-29T21:55:01.603 に答える
4

正しいフォルダに設定TEMPLATE_DIRSしていることを確認してください。settings.py

于 2012-08-03T10:34:41.673 に答える