2

私は、最初の django Web アプリをつなぎ合わせ、mod_wsgi を使用して Apache と統合したばかりの Web 開発の初心者です。アプリには、複数の SQL サーバー データベースにクエリを実行できる 15 個のパラメーターがあり、結果を .xls ファイルとしてダウンロードできます。会社のネットワークに同じものを展開しました。

問題は、あるマシンで Web アプリにアクセスしてクエリ パラメーターを設定すると、別のマシン (Web クライアント) から Web アプリを開こうとすると、同じパラメーターが Web アプリに設定されることです。すべての Web クライアントに提供されるグローバル オブジェクトが 1 つだけあるようです。

django テンプレート タグを使用して、アプリの html ページに値を設定しています。

すでに構築されているSQLサーバーDBを照会しているため、djangoプロジェクトでモデルを使用していません。

私のviews.pyのクエリ関数は次のようになります

def query(self,request):
    """
    """
    print "\n\n\t inside QUERY PAGE:",request.method,"\n\n"

    self.SummaryOfResults_list = []
    if self.vmd_cursor != -1:
        self.vmd_cursor.close()

    if request.method == 'POST':
        QueryPage_post_dic = request.POST
        print "\n\nQueryPage_post_dic   :",QueryPage_post_dic

        self.err_list = []
        self.err_list = db_qry.validate_entry(QueryPage_post_dic)

        if len(self.err_list):
            return HttpResponseRedirect('/error/')
        else:
            channel_numbers,JPEG_Over_HTTP,Codec,format,rate_ctrl,transport,img_sz,BuildInfo_versions, self.numspinner_values_dic = db_qry.process_postdata(QueryPage_post_dic, self.numspinner_values_dic)


            return self.get_result(request,channel_numbers,JPEG_Over_HTTP,Codec,format,rate_ctrl,transport,img_sz,BuildInfo_versions)

    else:
        print "\nself.Cam_Selected_list inside qry  :",self.Cam_Selected_list
        if (len(self.Cam_Selected_list) != 1):
            return HttpResponseRedirect('/error/')

        self.tc_dic,self.chnl_dic,self.enbl_dic,self.frmt_dic,self.cdectyp_dic,self.imgsz_dic,self.rtctrl_dic,self.jpg_ovr_http_dic,self.trnsprt_dic,self.cdec_dic,self.typ_dic,self.resolution_dic, self.vmd_cursor = populate_tbls.Read_RefTbls(self.Cam_Selected_list[0])



        c = self.get_the_choices(self.Cam_Selected_list[0])
        c['camera_type']= self.Cam_Selected_list[0]

        for k,v in self.numspinner_values_dic.items():
            c[k] = v

        self.vmd_cursor.execute("SELECT DISTINCT [GD Build Info] FROM MAIN")
        res_versions = self.vmd_cursor.fetchall()
        version_list = []
        ver_list = ['',' ']
        for version in res_versions:
            tmp_ver = version[0].encode()
            if (tmp_ver not in ver_list):
                version_list.append(tmp_ver)
        c['build_info'] = version_list
        print "\n\n c dic   :",c
        c.update(csrf(request))
        return render_to_response('DBQuery.html',c)

render_to_response に渡される辞書は、チェックボックスと複数選択ボックス (dojo) を設定する値を保持します。

ありがとう

4

2 に答える 2

2

すべての Web クライアントに提供されているグローバル オブジェクトが 1 つだけあるようです。

あなたが言っていることは、おそらくまさに起こっていることです。selfそのサンプルコードでリクエストごとに新しいオブジェクトを作成しない限り、クライアント間で実質的にランダムに共有されます。

于 2012-06-18T17:18:43.940 に答える
0

使用している SQL DB にグローバル変数を格納できます。このようにして、リクエスト -> レスポンス サイクル全体で変数の値/状態を保持できます。

より速い応答時間が必要な場合は、redis などのメモリ データストアで Key->Value Pair を調べてください。

AKX の言及に加えて、HTTP Request -> HTTP Response cycle および How web applications work を読むことをお勧めします。

于 2012-06-18T18:00:53.157 に答える