0

私の URL の正規表現は ですr'^admin.*/static/admin/(?P<path>.*)$'。これでadmin/static/admin/css/base.cssまたはadmin/123/static/admin/js/actions.jsと一致するようになりましたが、URL のように一致させたいadmin/blog/post/static/static/admin/js/actions.js(現在は一致しません)

どうすればそれができますか?

みんなのコメントをありがとう。

私の問題は、このurl(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT,}), 設定のように、django に静的 URL パスを設定して css/js ファイルを保存することです。STATIC_ROOT はos.path.join(os.path.dirname(os.path.abspath(__file__)), 'static')

しかし、管理インターフェイスにアクセスすると、すべての css/js ファイルが見つかりません。admin css ファイルdjango\contrib\admin\static\adminは html ファイルに保存され、その URL は 'static/admin/css/base.css' であるためです。設定で設定した静的パスにこのファイルはありません。

私の解決策は、のような別の URLr'^admin.*/static/admin/(?P<path>.*)$'を設定し、ドキュメント ルートを django admin 静的ファイル パスに設定することです。しかし、私が言ったように、管理者のメインページに行くと、すべて問題ありません.「ユーザーの追加」ページのように深く行くと、cssファイルがまだありません.

また、解決策は私のURLを定期的に変更することであることがわかりましたr'.*/static/admin/(?P<path>.*)$'。それはすべてに問題ありませんが、より良い解決策はありますか?

静的パスで collectstatic を実行すると、admin フォルダーとその css/js ファイルが見つかります。次に、URL パスを url(r'^admin/static/(?P.*)$','django.views.static.serve',{'document_root'‌ :settings.STATIC_ROOT}) に設定します。メインの管理ページでは機能しますが、アクセスhttp://localhost/admin/sites/site/static/static/admin/js/admin/RelatedObje‌​ctLookups.jsしても機能しません。どうすれば URL パスを記述できますか?

4

1 に答える 1

0

パターンはうまく一致します:

>>> import re
>>> p = re.compile(r'^admin.*/static/admin/(?P<path>.*)$')
>>> p.match("admin/blog/post/static/static/admin/js/actions.js").groups()
('js/actions.js',)

なぜそれがうまくいかなかったのかはっきりしません。問題のある URL が他の以前の正規表現と一致しないことを再確認しましたか?

EDIT:上記の更新に基づいて、STATIC_URL適切に設定されていない可能性があります(おそらく空の文字列ですか?)。静的ファイルが提供される場所 (ディレクトリではなく URL) を指し、スラッシュで終わる必要があります。設定: STATIC_URLを参照してください。

(脚注として、URL の正規表現が多すぎることに少し注意する必要があります。これについてはまだ理解していませんが、ここで行っていることを超える前に、ウィキペディアのReDoSの記事を読むことをお勧めします。 )

于 2013-07-23T18:15:54.510 に答える