1

カスタム テンプレート フィルターを使用して変更する必要がある Django アプリケーションを継承しました。私は Django にまったく慣れていないので、かなり戸惑っています。指示に正確に従っていると思っていましたが、この件に関する他の投稿からのすべてのアドバイスにも従っていましたが、テンプレートに次の行を含めると、まだエラーが発生します。

{% load mlgb_custom_filters %}

私のディレクトリ構造は次のとおりです。

mysite (i.e. the project)    
    __init__.py    
    mlgb/ (i.e. the app)    
      __init__.py    
      templatetags/    
          __init__.py    
          mlgb_custom_filters.py    

mlgb_custom_filters.py のコードは次のとおりです。

from django import template    
from django.template.defaultfilters import stringfilter    
register = template.Library()    
@register.filter(name='fix_dashes')    
@stringfilter    
def fix_dashes( value ):    
    return value.replace( '--', 'DASH' )    
if __name__ == "__main__":    
    testvar = fix_dashes( "ouch -- ow -- I hate django" )    
    print testvar    

ご覧のとおり、'name = main' セクションを追加して、スタンドアロン モードで実行できるようにしました。これは、その特定のファイルにエラーがないことを確認するためであり、スタンドアロン モードで実行しても問題ありません。

他の人のアドバイスに基づいて、インポートエラーが発生したかどうかを確認するために、別のファイルにインポートしようとしましたが、これをsettings.pyの最後に追加しても問題ありませんでした(devを使用している間)サーバ):

試してみてください: mlgb.templatetags.mlgb_custom_filters を例外としてインポートします。

また、settings.py の INSTALLED_APPS には「mysite.mlgb」という行が含まれています。さらに別の人が提案したように、「mysite.mlgb」の代わりに「mlgb」だけを入れてみました。そして、変更を加えるたびに開発サーバーを再起動しました。

今までウェブで見つけたすべての提案を試したと思います。新しいアイデアを持っている人はいますか?テンプレートディレクトリがアプリケーションと同じ構造内にない、つまり mysite の下にないディレクトリ構造を継承したという事実と何か関係があるのでしょうか? ここでアイデアのバレルをこすり落とします!誰かが助けてくれることを願っています。

4

2 に答える 2

2

OK、この質問を最初に投稿したときの状況では、実際に必要だったのはwsgi、ディレクトリの下のファイルに触れてappname/apache、アプリケーションを強制的に更新することだけだったようです。昨日の最初の答えはニシンでした。基本的に私はファイルに触れたはずですmyproject/myapp/apache/myapp.wsgi。次に、適切な測定のためにApacheを再起動しますか?しかし、単に Apache を再起動するか、手動で Python を再コンパイルするだけでは明らかに不十分であるという事実が、混乱を引き起こしました。変更を反映するには、その wsgi ファイルに触れる必要があったようです。その後、すべてが順調です。

于 2012-04-17T14:09:18.473 に答える
0

素晴らしい探偵の仕事がその日を救ってくれた同僚のMasudKhokharの助けを借りて、私は自分の質問に対する答えを投稿できるようになりました。要約すると、テンプレートファイルの1つに「load」ステートメントを追加して「カスタムフィルター」モジュールをロードするまで、アプリケーションは正常に機能していました。Masudは、以前のように相対パスではなく、urls.pyのテンプレートファイルへの完全/絶対パスを使用する必要があることを確認しました(カスタムフィルターモジュールをロードする必要があるまでは、以前は機能していました)。したがって、urls.pyには、次のようなコードのセクションがあります。

 url(r'^book/(?P<object_id>\d+)/$', 'list_detail.object_detail',
     kwargs={
        'queryset':Book.objects.all(),
        'template_name' : 'mlgb/mlgb_detail.html'
     },
     name='mlgb_detail'
 ),

これの代わりに:

        'template_name' : 'mlgb/mlgb_detail.html'

私はこのようなものが必要でした:

        'template_name' : '/THE_FULL_PATH/mlgb/templates/mlgb/mlgb_detail.html'

その変更を行いました-ソートされました!もう一度ありがとう、マスッド。

于 2012-04-16T10:35:21.050 に答える