0

Django アプリの管理サイトのヘルプ システムを実装しています。ヘルプ テキストは、admin-help とい​​う別のアプリでモデル オブジェクトとして実装されます。管理サイトはGrappelli.

セットアップは次のとおりです。

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

(r'^admin-help/', include('admin-help.urls')),

これは、デフォルトのadminURL とGrappelliURL の前にあります。

私が持っているアプリurls.pyのために:admin-help

urlpatterns = patterns('',
    ...
    url(r'^admin-help/list-modelXYZ', 'admin-help.views.list-modelXYZ'),
    ...
)

私の計画は、管理ページから AJAX 呼び出しを介してヘルプ ページを取得することでした。そこで、ある特定の管理テンプレートを変更してonclick、トピックを渡す Javascript 関数を呼び出すハンドラーを備えた HELP ボタンを含めました。

<li>
  <a href="#" onclick="showHelp('list_modelXYZ')" class="grp-state-focus">Help</a>
</li>

このshowHelp()関数は、要求された URL の一部として要求されたトピックを渡す AJAX 呼び出しを実行します。

function showHelp(topic) {
  grp.jQuery.ajax({
    type: 'GET',
    url: '/admin-help/' + topic,
    success: function(html) {
      grp.jQuery('#help-content-area').html(html);
      grp.jQuery('#help-frame').show();
    }
  });
}

私が持っている管理者ヘルプアプリ内views.py

def list_modelXYZ():
  return HttpResponse("Hello world!")

ヘルプ ボタンをクリックすると、次の URL で 404 が返されます。

http://localhost:8080/admin-help/list_modelXYZ

これで 404 になるのはなぜですか? 私はジャンゴのジェダイではありません。誰かが間違いを指摘してくれることを願っています...

4

2 に答える 2

1

「admin-help」プレフィックスの下にURLを含めると、

(r'^admin-help/', include('admin-help.urls')),

次に、そのプレフィックスの下にあるURLを「ルート」します。https://docs.djangoproject.com/en/dev/topics/http/urls/#include-other-urlconfsを参照してください。 これは、プレフィックス「admin-help」がサブハンドラーに到達したときにすでに「処理」されていることを意味します。問題は、サブハンドラーがプレフィックスを繰り返していることです。

urlpatterns = patterns('',
    ...
    url(r'^admin-help/list-modelXYZ', 'admin-help.views.list-modelXYZ'),
    ...
)

したがって、「admin-help / admin-help/list-modelXYZ」と一致します。サブURLからプレフィックスを削除するだけで、目的のURLを取得できます。

admin-help / urls.py:

urlpatterns = patterns('',
    ...
    url(r'^list-modelXYZ', 'admin-help.views.list-modelXYZ'),
    ...
)

それらがたくさんある場合は、次のショートカットを使用できます。

urlpatterns = patterns('admin-help.views',
    ...
    url(r'^list-modelXYZ', 'list-modelXYZ'),
    url(r'^more$', 'something_else'),
    ...
)

PS:「-」は「マイナス」演算子であるため、「admin-help」はモジュールの適切な名前ではありません。「importadmin-help」を実行すると、SyntaxErrorが発生します。「help」も良くありません(組み込み関数)、「adminhelp」をお勧めします。:-)

于 2013-02-21T20:20:13.030 に答える
1

urlconf はlist-modelXYZ

url(r'^admin-help/list-modelXYZ', 'admin-help.views.list-modelXYZ'),

アクセスしていた間list_modelXYZ(アンダースコアに注意してください)

http://localhost:8080/admin-help/list_modelXYZ

打ち間違え?

また'admin-help.views.list-modelXYZ'、urlconf内には次のようにあるようです'admin_help.views.list_modelXYZ'

さらに、^admin-help2 つの urls.py ファイルに 2 つ...

于 2013-02-21T13:37:44.690 に答える