3

BIRT を Python Django と統合しようとしています。ユーザーがレポートにパラメーターを入力できるフォームを Django で作成しました。フォームが送信されると、ビューはパラメーターを受け取り、要求を作成して BIRT Tomcat サーバーに送信します。今、サーバーからの応答をレンダリングしようとしています。これは私の見解です:

def birt_report(request, report_id, report_url=None, template='report_parameters.html'):
    if request.method == 'POST':
        form = ReportParametersForm(request.POST)
        if form.is_valid():
            report_params = form.save()
            form_id = report_params.id
            url = "http://<hostname>/BIRT-Viewer/frameset?__report=" + report_url + ".rptdesign"
            url += "&param_id=" + str(form_id)
            r = requests.get(url)
            return HttpResponse(content=str(r.content),status=200,content_type='text/html; charset=utf-8')
    else:
        form = ReportParametersForm()
        return render(request,template, {
            'form': form,
            'report_url': report_url,
            'report_id': report_id,
        })

BIRT サーバーから返されたものをレンダリングしようとするところまで、すべてが機能します。デフォルトの BIRT Web アプリ ツールバーが表示されます。ただし、ページのレポート部分は空白です。外観は次のとおりです。

BIRT レポート

レポートは、私の Eclipse Report Designer プレビューで適切に生成されます。レポートをここに表示するにはどうすればよいですか? ありがとう!

編集:

ページの読み込み中に何が起こっていたのかを調べたところ、Javascript コンソールに次のエラーが表示されました。

POST http://<hostname>/<Django_URL>/__sessionId=20130410_103510_658?__sessionId=20130410_103510_658 404 (NOT FOUND)
    prototype.js:656
Ajax.Request.Object.extend.request
    prototype.js:656
Ajax.Request.Object.extend.initialize
    prototype.js:631
(anonymous function)
    prototype.js:24
BirtCommunicationManager.connect
    BirtCommunicationManager.js:58
BirtEventDispatcher.sendEvent
    BirtEventDispatcher.js:179
BirtEventDispatcher.broadcastEvent
    BirtEventDispatcher.js:141
Object.extend.__init_pag
e    BirtNavigationBar.js:243
init
    <hostname>:1604
onload
    <hostname>:91

BIRT に含まれている BIRT Viewer webapp 経由でレポートにアクセスすると、Javascript ファイル [b]prototype.js:656[/b] は次の URL を使用します。

http://<hostname>/BIRT-Viewer/frameset?__report=<report_name>.rptdesign&param_id=1&__sessionId=20130410_103510_658

それ以外の:

http://<hostname>/<Django_URL>/__sessionId=20130410_103510_658?__sessionId=20130410_103510_658
4

0 に答える 0