0

私は自分のプロジェクトを次のように編成しました。

myproject/
    urls.py
    settings.py
    views.py
    templates/
    apps/
        __init__.py    <-- needed in order to be identified as a package
        exampleapp/
             __init__.py
             admin.py
             models.py
             urls.py
             views.py
        exampleapp2/
        ...

私のsettings.pyINSTALLED_APPSでは、アプリの名前は「apps.exampleapp1」、「apps.exampleapp2」で、モジュールがサブディレクトリにあることを示すドット(。)表記が付いています。ドキュメントによると、アプリの管理テンプレートをオーバーライドまたは拡張する場合は、「admin / appname / modelname /」という名前のテンプレートにディレクトリを作成する必要がありますが、「admin / apps /exampleapp/」と「admin/apps /exampleapp/」の両方を試しました。 'admin / apps.exampleapp'ですが、どちらも機能しません。django.contrib.adminコードのどこで、テンプレートを置き換える方法を見つけることができますか、より簡単に言えば、管理テンプレートを拡張または置き換えるために必要なディレクトリパスは何ですか?

4

2 に答える 2

0

アプリをどのように整理するかは重要ではありません。アプリの名前は、「exampleapp」または「exampleapp2」という直接のフォルダー名のままです。

したがって、管理者テンプレートのオーバーライドは、「/ templates / admin / exampleapp /modelname/」および「/templates/ admin / exampleapp2 /modelname/」に配置する必要があります。

于 2012-04-17T21:51:36.927 に答える
0

これは古いかもしれませんが、このソリューションが誰かを助けることを願っています

(Django 1.8.1)

まず、settings.pyの上部にあります。

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

それで:

拡張する管理者テンプレートをmyproject/templateで作成したフォルダーにコピーします

その後、setting.pyTEMPLATEでディレクトリを指定します。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates'),],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',],},},]

結局、私は自分が使いたいファイルにこれがあることに気づきました。

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

{% block title %}
     {{ title }} | {{ site_title|default:_('My Site') }}
{% endblock %}

{% block branding %}
    <h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Admin Page') }}</a></h1>
{% endblock %}

{% block nav-global %}{% endblock %}

ただし、デフォルトのDjangoタイトルとヘッダーが表示され続けます。これらの行は、私が解決策を見つけた場所です。

{{タイトル}}| {{site_title | default:_('マイサイト')}}

{{site_header | default:_('管理ページ')}}

site_title | default:_site_header | default: _を削除するとすぐに、必要なものが表示されました。

繰り返しますが、これが誰かの助けになることを願っています。

于 2015-05-18T05:50:59.057 に答える