2014-10-07 68 views
0

我有一個包含以下代碼的django其餘框架視圖 -脅迫爲Unicode:需要字符串或緩衝區,列表中發現

trgmst_info = request.DATA['trgmst_info'][0] 
request_accts = ['request-dev', 'request-qa', 'request-uat', 'request-prod'] 
request.DATA['trgmst_info'] = [rd.replace(request_accts, settings.REQUEST_ACCT) for rd in request.DATA['trgmst_info']] 

爲request.DATA值[「trgmst_info」] [0]是如如下 -

"<eventmon><conn>24</conn><action>3</action><folder/><mailbox>Inbox</mailbox><condition><condcount>1</condcount><criteria1>Sender</criteria1><ctext1>test_MESSage</ctext1><csensitive1>Y</csensitive1></condition><msgbody>Y</msgbody><evtmtrg>Inbox ([email protected])</evtmtrg></eventmon>" 

我試圖做的是掃描的request_accts之一,並與值是settings.REQUEST_ACCT什麼替代它

一切能使雖然發生在下面的錯誤 -

coercing to Unicode: need string or buffer, list found 

Traceback: 
File "D:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response 
    112.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "D:\Python27\lib\site-packages\django\views\generic\base.py" in view 
    69.    return self.dispatch(request, *args, **kwargs) 
File "D:\Python27\lib\site-packages\django\views\decorators\csrf.py" in wrapped_view 
    57.   return view_func(*args, **kwargs) 
File "D:\Python27\lib\site-packages\rest_framework\views.py" in dispatch 
    400.    response = self.handle_exception(exc) 
File "D:\Python27\lib\site-packages\rest_framework\views.py" in dispatch 
    397.    response = handler(request, *args, **kwargs) 
File "D:\Tidal\API\views.py" in put 
    464.     request.DATA['trgmst_info'] = [rd.replace(request_accts, settings.REQUEST_ACCT) for rd in request.DATA['trgmst_info']] 

Exception Type: TypeError at /deploy/event/ 
Exception Value: coercing to Unicode: need string or buffer, list found 

編輯 - 如果我偷偷在第一行後,下面的代碼 -

print trgmst_info 

它返回<。如果我改變了第一線以下 -

trgmst_info = request.DATA['trgmst_info'] 

打印返回的一切 -

<eventmon><conn>24</conn><action>3</action><folder/><mailbox>Inbox</mailbox><condition><condcount>1</condcount><criteria1>Sender</criteria1><ctext1>test_MESSage</ctext1><csensitive1>Y</csensitive1></condition><msgbody>Y</msgbody><evtmtrg>Inbox ([email protected])</evtmtrg></eventmon> 

但是,同樣的錯誤仍然存​​在。

回答

1

string.replace()使用字符串作爲參數而不是列表。 request_accts 是一個列表。

我不是一個Django的專家,但也許這將工作:

trgmst_info = request.DATA['trgmst_info'][0] 
request_accts = ['request-dev', 'request-qa', 'request-uat', 'request-prod'] 
for rep in request_accts: 
    request.DATA['trgmst_info'] = [rd.replace(rep, settings.REQUEST_ACCT) for rd in request.DATA['trgmst_info']] 
+0

啊,我找錯了帖子。那麼如何獲取它以檢查列表中提供的每個值的字符串? – whoisearth 2014-10-07 14:07:47

相關問題