0

2 つのビューを持つ

ビュー.py

def followup(request):
    ''''''
     marklist = report_template(request)
     return render(request, 'incident/followup.html',{'somevar':somevar})

def report_template(request):
    '''''
    report=Report.objects.filter(report=report_id)
     ''''''
    return render(request, 'incident/print.html',
        {'report':report})

あるメソッドを別のメソッド内で呼び出しています。report_template メソッドをフォローアップ メソッドに呼び出しています。フォローアップ メソッドには、テンプレートでレンダリングする変数もあります。

report_template メソッドの変数を followup メソッドに渡し、テンプレートに表示させる方法。

ありがとう

4

2 に答える 2

1

reportこれを実現する 1 つの方法は、両方のメソッドに必要な または コンテキストを返すヘルパー メソッドを作成することです。ここでの問題は、HTTPResponseオブジェクトを返すことです。ここでヘルパー メソッドを使用するのが最もクリーンです。

def get_report(request):
    report=Report.objects.filter(report=report_id)
    #do more processing here.
    #returning a dict is probably safest here, because, in the calling method, `.get()` would not throw an error if key is not present. 
    return {'report': report, 'somevar': somevar}

def followup(request):
     marklist = get_report(request).get('somevar')
     return render(request, 'incident/followup.html',{'somevar':marklist})

def report_template(request):
    report = get_report(request).get('report')
    return render(request, 'incident/print.html',
        {'report':report})
于 2013-07-17T13:58:44.837 に答える
0

ビューではそれを行うことはできません。テンプレートタグを検索する必要があります。これは、Django でこれを行うためのより良い方法です (ビューは Request 引数を受け入れ、HttpResponse 変数を返します)。

https://docs.djangoproject.com/en/dev/howto/custom-template-tags/を参照してください。

テンプレートタグを使用すると、ビューで行うことを因数分解することで、コードを再利用できるようになります。

于 2013-07-17T13:58:25.867 に答える