Django Adminのカスタムページを作成する方法 -- python フィールド と django フィールド と django-admin フィールド 関連 問題

How can I create custom page for django admin?


40
vote

問題

日本語

モデルなしで管理パネルのカスタムページを作成したいです。最初にIndex.htmlをプロジェクトフォルダにコピーするには:

<事前> <コード> mysite/ templates/ admin/ index.html

その後Appsに追加するマイコード:

<事前> <コード> <div class="module"> <table summary="{% blocktrans with name="preferences" %}Models available in the preferences application.{% endblocktrans %}"> <caption><a href="preferences" class="section">{% blocktrans with name="preferences" %}Preferences{% endblocktrans %}</a></caption> <tr> <th scope="row"><a href="preferences">Preferences</a></th> <td><a href="preferences" class="changelink">{% trans 'Change' %}</a></td> </tr> </table> </div>

これは良く機能し、新しいページ/templates/admin/preferences/preferences.htmlを作成します。 urls.pyに追加:

<事前> <コード> url(r'^admin/preferences/$', TemplateView.as_view(template_name='admin/preferences/preferences.html')),

とPreferencesにコードを追加します.html:

<事前> <コード> {% extends "admin/base_site.html" %} {% block title %}Test page{% endblock %}

実行して、エラー「要求された管理ページは存在しません。」私が間違っていますか?

英語

I want to create custom page for admin panel without model. For first i copy index.html to project folder:

mysite/     templates/         admin/             index.html 

Then add to apps block my code:

<div class="module">     <table summary="{% blocktrans with name="preferences" %}Models available in the preferences application.{% endblocktrans %}">         <caption><a href="preferences" class="section">{% blocktrans with name="preferences" %}Preferences{% endblocktrans %}</a></caption>             <tr>                 <th scope="row"><a href="preferences">Preferences</a></th>                 <td><a href="preferences" class="changelink">{% trans 'Change' %}</a></td>             </tr>     </table> </div> 

This works good, then I create new page /templates/admin/preferences/preferences.html and add to urls.py:

url(r'^admin/preferences/$', TemplateView.as_view(template_name='admin/preferences/preferences.html')), 

And add code to preferences.html:

{% extends "admin/base_site.html" %} {% block title %}Test page{% endblock %} 

Run it and see message with error "The requested admin page does not exist.". What I do wrong?

</div
        
       
       

回答リスト

33
 
vote
vote
ベストアンサー
 

管理者自体のURLパターンをに追加する必要があります。

<事前> <コード> urlpatterns = patterns('', url(r'^admin/preferences/$', TemplateView.as_view(template_name='admin/preferences/preferences.html')), url(r'^admin/', include('django.contrib.admin.urls')), )

このようにして、URLはDjangoのadminによって処理されません。

 

You need to add your admin URL before the URL patterns of the admin itself:

urlpatterns = patterns('',    url(r'^admin/preferences/$', TemplateView.as_view(template_name='admin/preferences/preferences.html')),    url(r'^admin/', include('django.contrib.admin.urls')), ) 

This way the URL won't be processed by Django's admin.

</div
 
 
     
     
15
 
vote

年に進み、それにそれに対する関連の答えを投稿することができます。

Django 1.10+を使用することができます。

security / admin.py(これはあなたのアプリの管理ファイルです)

<事前> <コード> ifconfig -a 0

セキュリティ/テンプレート/ configuration.html

<事前> <コード> ifconfig -a 1

公式modeladmin.get_urls.説明(適切なDjangoバージョンを選択していることを確認してください。このコードは上記の1.10で有効です)

  • 上記のget_urls()の使用に注意してください。
  • この新しい管理ページはなります 以下の下にアクセス可能 https:// localhost:8000 / admin / security / configuration /
  • このページは管理ログインarea
  • で保護されます。
 

Years go by and still a relevant answer to this can be posted.

Using Django 1.10+ you can do:

security/admin.py (this is your app's admin file)

from django.contrib import admin from django.conf.urls import url from django.template.response import TemplateResponse from security.models import Security   @admin.register(Security) class SecurityAdmin(admin.ModelAdmin):      def get_urls(self):          # get the default urls         urls = super(SecurityAdmin, self).get_urls()          # define security urls         security_urls = [             url(r'^configuration/$', self.admin_site.admin_view(self.security_configuration))             # Add here more urls if you want following same logic         ]          # Make sure here you place your added urls first than the admin default urls         return security_urls + urls      # Your view definition fn     def security_configuration(self, request):         context = dict(             self.admin_site.each_context(request), # Include common variables for rendering the admin template.             something="test",         )         return TemplateResponse(request, "configuration.html", context) 

security/templates/configuration.html

{% extends "admin/base_site.html" %} {% block content %} ... {% endblock %} 

See Official ModelAdmin.get_urls description (make sure you select proper Django version, this code is valid for 1.10 above)

  • Note the use of get_urls() above.
  • This new admin page will be accessible under: https://localhost:8000/admin/security/configuration/
  • This page will be protected under admin login area
</div
 
 
12
 
vote

admin's get_urls 。

 

You should be using admin's get_urls.

</div
 
 
   
   
5
 
vote

オブジェクトの詳細ページの右上の「履歴」ボタンの横にあるボタンからリンクされているカスタム管理ページのための(Django 1.6時点)に必要なもの(Django 1.6)の例です。

href="https://gist.github.com/mattlong/4B64212E096766E058B7" REL="NOREFRERRER"> https://gist.github.com/mattlong/4B64212E096766E058B7

 

Here's an example of everything that should be needed (as of Django 1.6) for a custom admin page that is linked to from a button next to the "History" button in the top right of an object's detail page:

https://gist.github.com/mattlong/4b64212e096766e058b7

</div
 
 
 
 
4
 
vote

全例:

<事前> <コード> from django.conf.urls import url from django.contrib import admin from django.db import models class DummyModel(models.Model): class Meta: verbose_name = 'Link to my shiny custom view' app_label = 'users' # or another app to put your custom view @admin.register(DummyModel) class DummyModelAdmin(admin.ModelAdmin): def get_urls(self): view_name = '{}_{}_changelist'.format( DummyModel._meta.app_label, DummyModel._meta.model_name) return [ url(r'^my_view/$', MyCustomView.as_view(), name=view_name) ]

このアプローチでDjangoの makemigrations コマンドはDumMymodel用のテーブルを作成するためのDBマイグレーションを作成します。

 

Full example:

from django.conf.urls import url from django.contrib import admin from django.db import models  class DummyModel(models.Model):     class Meta:         verbose_name = 'Link to my shiny custom view'         app_label = 'users'  # or another app to put your custom view  @admin.register(DummyModel) class DummyModelAdmin(admin.ModelAdmin):     def get_urls(self):         view_name = '{}_{}_changelist'.format(                 DummyModel._meta.app_label, DummyModel._meta.model_name)         return [             url(r'^my_view/$', MyCustomView.as_view(), name=view_name)         ] 

With this approach Django's makemigrations command will create DB migration to create table for DummyModel.

</div
 
 
       
       
0
 
vote

カスタムページを作成する場合は、ユーザー入力を処理するための任意のフォームを配置するだけで、 Django-etc 試してみましょう。 etc.admin.CustomModelPage があります。

 <コード>     from etc.admin import CustomModelPage      class MyPage(CustomModelPage):              title = 'My custom page'  # set page title          # Define some fields you want to proccess data from.         my_field = models.CharField('some title', max_length=10)          def save(self):             # Here implement data handling.             super().save()      # Register the page within Django admin.     MyPage.register()   
 

If you want to create a custom page just to place there an arbitrary form to handle user input, you may give django-etc a try. There's etc.admin.CustomModelPage you can use:

    from etc.admin import CustomModelPage      class MyPage(CustomModelPage):              title = 'My custom page'  # set page title          # Define some fields you want to proccess data from.         my_field = models.CharField('some title', max_length=10)          def save(self):             # Here implement data handling.             super().save()      # Register the page within Django admin.     MyPage.register() 
</div
 
 

関連する質問

3  Django管理リスト表示カスタム列の外部URLデータを表示する  ( Django admin list view show external url data in custom column ) 
下記のようなものを見るリストがあります モデルに存在しないビューでもう1つの列を追加したいとします。だから私たちは管理クラス内のメソッドを作成することによってそれをすることができます。 <事前> <コード> class PageAdmin(admin.M...

1  Django Forms:DateTimeInputウィジェットのメディア(JavaScript)を表示する方法  ( Django forms how to display media javascript for a datetimeinput widget ) 
こんにちは(私の悪い英語のために私を言い訳してください)、 クラスを想像してみてください: model.py <事前> <コード> from django import models class MyModel(models.Model): ...

3  Django管理ページのラベル '認証'を変更する  ( Django change the admin page label auth to authentication ) 
Django Admin Dashboardの表示ラベル<コード> Auth を Authentication に変更する方法 ...

14  指示を伴う外部キードロップダウンを制限する方法  ( How to limit the foreignkey dropdown with constraints ) 
私は2つの異なるチーム間の相互作用を追跡するデータベースを持っています(管理インタフェースに2つの異なるグループによって表されます)。一部のフィールドでは、ユーザーデータベースを参照してください。ドロップダウンユーザーを特定のグループだけに制限します。 誰か...

1  Django - Django-admin-tools  ( Django django admin tools ) 
Django-admin-toolsアプリをインストールしました。しかし、私は「クイックリンク」ボックスをどこにでも移動することはできません。管理インターフェースの右側にある「クイックリンク」ボックスへの方法はありますか? ...

3  1.1でのDjango管理アクション  ( Django admin action in 1 1 ) 
Django.Iでアクションを書いています。今、行のIDフィールドが更新された行について、すべてのアクションのログを作成したいです。 私は3つの値を持つフィールドステータスを持っています: 'Activate'、 'Pending'、 'Reject'。私は...

0  親クラスDjango Adminで定義されたアクションをオーバーライドします  ( Override actions defined in parent class django admin ) 
Django 1.11からDjangoプロジェクトをアップグレードしています。プロジェクトをDjango 2.1にアップグレードしました。 Django 2.2にアップグレードしたら、このエラーメッセージが表示されます "(admin.e130) name ...

2  M2MでのDjangoのパフォーマンス  ( Django performance with m2m ) 
私はこのようなモデルを持っています: <事前> <コード> class ParentObject(models.Model): ... services = models.ManyToManyField(Service) class ChildObj...

1  管理テンプレートオーバーライド無視されたタイトルブロック  ( Admin template override ignored title block ) 
/project_dir/templates/admin/base_site.html にカスタムバージョンのbase_site.htmlを作成するときに、タイトルブロックはオーバーライドされません。正しいテンプレートはレンダリングされていますが、次のよう...

0  Django管理者のチェックボックスは、Booleanfieldなしで保存時にPython機能を実行します。  ( Check box in django admin run a python function on save without a booleanfield ) 
Django Adminにチェックボックスをオンにする方法はありますが、それをブールフィールドと関連付けるのではなく、保存時にチェックされていない場合は関数を実行していますか?私はデータベースにブール値を保存する必要はありませんが、他のフィールドに応じて何か...

86  Django管理者インターフェースのReadOnlyモデル?  ( Readonly models in django admin interface ) 
管理者インターフェイスでは、モデルを完全に読み取り専用にすることができますか?検索、並べ替え、フィルタなどに管理機能を使用している一種のログテーブルのためのものですが、ログを変更する必要はありません。 これが重複しているように見える場合は、ではありません私がし...

1  Django Admin - 編集画面で赤ボタン削除メソッドをオーバーライドする  ( Django admin override red button delete methods in edit screen ) 
このようなFKに関連する2つのモデルがあります。 <事前> <コード> line1Buffer3 SO、MODELAのインスタンスを削除するには、それに関連するModelBインスタンスを削除する必要があります。 DELETE_SELECTED()メソッドを...

3  djangoのadmin.tabularinlineフォームでTextAreaサイズを変更するためのformfield_overridesを使用して  ( Using formfield overrides to change textarea size in admin tabularinline form in ) 
TextFieldサイズはformfield_overridesを使用して上書きされます。 <事前> <コード> from django.forms import Textarea, TextInput formfield_overrides = { ...

7  RawQuerySetからクエリセットを返します  ( Return queryset from a rawqueryset ) 
RawQuerySetからクエリセットを作成しようとしていますが、チェンジリストは常に Something's wrong with your database installation. Make sure the appropriate database...

1  Django - ユーザーにプロキシモデルを使用していますか?  ( Django is using proxy model for users recommended ) 
現在、管理者サイトで異なるユーザーを区別するためのプロキシモデルをいくつか使用しています。 <事前> <コード> class TeacherProxy(User): class Meta: proxy=True app_...

0  Django 3 Adminにカスタムクエリパラメータを追加する方法list_displayでデータ列を変更するには  ( How to add custom query parameter to django 3 admin to change data column in lis ) 
Student 、<コード>および<コード>および<コード>および<コード>および<コード>および<コード>および<コード>および<コード>および Grade のモデルがあるとします。特定のコースのグレードを表示するために学生adminに列を追加し、どのコ...

4  Django Adminでの固定ドロップダウンを表示する方法  ( How to display fixed dropdown in django admin ) 
優先情報をドロップダウンに表示したいと思います。現在は優先順位を保存するために整数フィールドを使用していますが、ユーザーの種類を優先させる代わりにハイ/ミディアム/ローを表示したいと思います。 これを近似する方法は、3つの要素を格納する優先データベース1:H...

4  Djangoカスタム管理者の注文  ( Django custom admin ordering ) 
私の管理領域に画像のリストがあります。すべてのフィールドにUPP / Downボタンを追加したいと思います。上へフィールドをクリックすると、画像が画像の順に移動します。そのため、リスト上の3つの番号3と言うと、クリックしてください。これで番号2に移動するはずで...

0  Djangoモデルに2番目のchangelist_viewを追加する方法  ( How to add a second changelist view to a django model ) 
Changelist_Viewは、特定のフィールドを多くのエントリに編集するのに最適であるため、身体のインターフェイスに複数のビューを追加することについて説明しましたが、各フィールドのためにそれぞれが最善の方法になることはわかりません。それ以前は? ...

0  Django Manage.py runserverは "ようこそページ"を表示しません  ( Django manage py runserver do not display welcome page ) 
Djangoチュートリアルを続けていますが、サーバーを起動した直後に、私が他のPCでこのチュートリアルを行った直後に、ウェルカムページをロードしようとするとエラーが発生しています。 使用: Windows 7 / Djando 1.9 / Python ...

3  Django:admin Register Custom管理サイトクラスのデコレータ  ( Django admin register decorator for custom admin site class ) 
だから私は docs <事前> <コード> package be.gillescoeman.scubajournal; // import android.app.Fragment; // import android.app.FragmentTr...

1  Django Admin Soortableは保存しません  ( Django admin sortable wont save ) 
Models.pyにこれを持っています: <事前> <コード> class Upload(models.Model): discussion = models.ForeignKey(Discussion, blank=True, null=True)...

0  Django管理フォームのデフォルトのインライン値の定義  ( Defining default inline value for django admin forms ) 
このようなインライン管理クラスがある場合: <事前> <コード> class ResourceInline(admin.TabularInline): model = Resource extra = 3 マニュアルには、 prepopul...

0  Django Admin TabularInlineの下でDBで保存するようにユーザーとして現在の管理ユーザーを設定します。  ( Set current admin user as user to save in db under django admin tabularinline ) 
私の管理者ページの下に TabularInline を持っていますが、読み取り専用に submit_user フィールドの編集を編集しないようにします。 しかしデータベース内の新しいエントリを作成するときは、現在のユーザーを submit_user として渡...

7  カスタムウィジェットテンプレートに組み込みのDjangoウィジェットテンプレートを含めるにはどうすればよいですか。  ( How do i include a built in django widget template in my custom widget template ) 
私は私のアプリでDjangoウィジェットを書いています。ただし、ウィジェットは <textarea> の拡張子であるため、Django TextAreaウィジェットを含めたいと思います。<コード> django/forms/templates/django/f...

関連する質問

3  Django管理リスト表示カスタム列の外部URLデータを表示する 
1  Django Forms:DateTimeInputウィジェットのメディア(JavaScript)を表示する方法 
3  Django管理ページのラベル '認証'を変更する 
14  指示を伴う外部キードロップダウンを制限する方法 
1  Django - Django-admin-tools 
3  1.1でのDjango管理アクション 
0  親クラスDjango Adminで定義されたアクションをオーバーライドします 
2  M2MでのDjangoのパフォーマンス 
1  管理テンプレートオーバーライド無視されたタイトルブロック 
0  Django管理者のチェックボックスは、Booleanfieldなしで保存時にPython機能を実行します。 
86  Django管理者インターフェースのReadOnlyモデル? 
1  Django Admin - 編集画面で赤ボタン削除メソッドをオーバーライドする 
3  djangoのadmin.tabularinlineフォームでTextAreaサイズを変更するためのformfield_overridesを使用して 
7  RawQuerySetからクエリセットを返します 
1  Django - ユーザーにプロキシモデルを使用していますか? 
0  Django 3 Adminにカスタムクエリパラメータを追加する方法list_displayでデータ列を変更するには 
4  Django Adminでの固定ドロップダウンを表示する方法 
4  Djangoカスタム管理者の注文 
0  Djangoモデルに2番目のchangelist_viewを追加する方法 
0  Django Manage.py runserverは "ようこそページ"を表示しません 
3  Django:admin Register Custom管理サイトクラスのデコレータ 
1  Django Admin Soortableは保存しません 
0  Django管理フォームのデフォルトのインライン値の定義 
0  Django Admin TabularInlineの下でDBで保存するようにユーザーとして現在の管理ユーザーを設定します。 
7  カスタムウィジェットテンプレートに組み込みのDjangoウィジェットテンプレートを含めるにはどうすればよいですか。