2023年9月8日金曜日

Django/PythonでのWEBアプリ開発を更に勉強ーその4

 この前のところで、大枠はcanvasjsによる表示が出来そうなところまで来て、最後に残った2つの問題について、検討(検索?)

1)djangoで使用している変数の値を表示される方法

  context[xxx]=abcとしてhtml に{{xxx}}とすれば表示が出来るとあったので、

  context= { 'year' : d.year(), 'month':d.month(),.....  (d=datetime.datetime.now())

としてみたら、TypeError: 'int' object is not callable と出てくるので、

  context={'date': d.date()......}としたら、正しく表示されるようになりました。

 なんで二重中括弧でくくるの?とか、型の取り扱い(数値、文字、リスト、辞書等)が今一よく分かっていませんが、 取り敢えずは、問題の一つは解決。

2)canvasjsでの空のデータを渡されたときの対応 (未解決)

  DBからのデータが無かった場合に、当該のobjectが生成されないために、以下のようなエラーが出る。 因みにlocal variable referenced before assignmentはググると結構出てくるので、嵌りやすい問題かも(C等と違い、variableを事前に宣言しないで使えちゃうので些かキモイ言語だと思っていますが、これは典型的なエラーですね)

  :         :          :           :         :

 File "/home/Users/ken/application_environment/mysite2/wxmonitor/views.py", line 240, in dailydata
    'MR2data': MR2tempdata,
UnboundLocalError: local variable 'MR2tempdata' referenced before assignment
[08/Sep/2023 11:35:45] "GET /dailydata/ HTTP/1.1" 500 66299

で、views.pyの中で、objectが出来ていなかった場合には空のリストを生成して渡すようにした。 これで、canvasjsも当該のデータの欠落を無視して表示されるようになった。 

<これって配列を使用する前に、空の配列を作ってから使用するようにすれば、条件のif文を一つ省略できるし、Argol系の使用する前に宣言と同じことなので、此方で行くことにしました。 これデコードが大分スッキリしました。


左は、改良後の表示のの状態(下が正常な状態で、上が欠落データがある状態)


 

 後学のために改良したviews.pyの一部を下に示しておきます

 

初めから空の辞書リストを宣言しておけば、シンプルに書けるので、そういうふうに書き直しました。

 

 

 

 


 

0 件のコメント:

php のインストールの確認

phpって最初のfacebook書くときに使われたみたいで、それなりに歴史のある言語で、私も2006年位から使っていますが、CLIで使う事はあまり無いので、apacheとの連携のトラブル(mod_phpのバージョンの齟齬)などは気になりますが、拡張モジュールのインストールの問題に...