Djangoでは端末からGET/POSTされた値が
requestオブジェクトに格納されます。
参照するにはこんな感じ。
print request.POST['text']
でも、POSTされた値を編集したい事もあります。
if request.method == 'POST':
str = request.POST['text']
#strの値を書き換える処理
request.POST['text'] = str
ここで値を上書きしようとすると例外が発生します。
AttributeError at /add
This QueryDict instance is immutable
Request Method: | POST |
---|
こんな感じ。
request.POSTはQueryDictというオブジェクトで、書き換え不可になっている為このエラーがでます。
いかにもPythonらしい躾けのエラーですね(笑)
というわけで、書き換えたい場合はQueryDictオブジェクトが持つcopyメソッドを使用してコピーを作ります。
if request.method == 'POST':
cp = request.POST.copy()
str = cp['text']
#strの値を書き換える処理
cp['text'] = str
これならエラーになりません。
また一つ勉強になりました。