2013-10-01 4 views
1

Следующая является мако шаблон я создалTypeError: объект Undefined не может быть итерируемым?

<%inherit file="/openerp/controllers/templates/base_dispatch.mako"/> 
<%def name="header()"> 
    <title>${_("Otp")}</title> 
    <script type="text/javascript">alert("OTP PAGE");</script> 
</%def> 
<%def name="content()"> 
    <table width="100%"> 
     <tr><%include file="header.mako"/></tr> 
    </table> 
    </br> 
    <table class="view" cellpadding="0" cellspacing="0" style="padding-top: 10px; border:none;" align="center"> 
     <tr> 
      <td style="padding:35px 10px 5px 35px; width="450" align="center"> 
       <form action="${py.url(target)}" method="post" name="otpform" id="otpform" style="padding-bottom: 5px; min-width: 100px;"> 
        % for key, value in origArgs.items(): 
         <input type="hidden" name="${key}" value="${value}"/> 
        % endfor 
        <input name="otp_action" value="otp" type="hidden"/> 
        <fieldset class="box" style="width:300px"> 
         <legend style="padding: 4px;"> 
          <img src="/openerp/static/images/stock/stock_person.png" alt=""/> 
         </legend> 
         <div class="box2" style="padding: 5px 5px 20px 5px"> 
          <b>Please enter SMS code</b> 
          <table width="" cellspacing="2px" cellpadding="0" style="border:none;"> 

           <tr> 
            <td class="label"><label for="otp">${_("Otp:")}</label></td> 
            <td style="padding: 3px;"><input type="text" id="otp" name="otp" class="db_user_pass" value="${otp}" autofocus="true"/></td> 
           </tr> 
           <tr> 
            <td></td> 
            <td class="db_login_buttons"> 
             <button type="submit" class="static_boxes">${_("Otp")}</button> 
            </td> 
           </tr> 
          </table> 
         </div> 
        </fieldset> 
       </form> 

      </td> 
     </tr> 
    </table> 

    <%include file="footer.mako"/> 
</%def> 

И файл питон для шаблона

import re 
from openobject.controllers import BaseController 
import cherrypy 
from openerp.utils import rpc 
from mako.lookup import TemplateLookup 
from mako.template import Template 
from openobject import tools 
import openobject 
from openobject.tools import expose, url, redirect, validate, error_handler 
import formencode 
import base64 
import time 

class OTP(BaseController): 

    _cp_path = "/openerp/otp" 
    msg = { 
      } 

    def __init__(self, *args, **kwargs): 
     super(OTP, self).__init__(*args, **kwargs) 
     self._msg = {} 

    @expose() 
    def index(self, *args, **kw): 
     print '>>>>>>>>>>>>>>>>>>>>>>>INDEX<<<<<<<<<<<<<<<<<<<<<<<<<<' 
     self.msg = {} 
     target='/' 
     url='socket://localhost:8070' 
     action='otp' 
     info='' 
     info = None 
     message='' 
     origArgs=self.get_orig_args(kw) 
     self.otp_check(target, action, message, origArgs) 

    @expose(template="/openerp/controllers/templates/otp.mako") 
    def otp_check(self, target, action=None, message=None, origArgs={}): 
     print '>>>>>>>>>>>>>>>>>>>>>>>otp_check<<<<<<<<<<<<<<<<<<<<<<<<<<' 
     target='/' 
     url='socket://localhost:8070' 
     action='otp' 
     info='' 
     info = None 
     return dict(target=target, url=url, action=action, message=message, origArgs=origArgs, info=info) 

    def get_orig_args(self,kw): 
     if not kw.get('otp_action'): 
      return kw 

     new_kw = kw.copy() 
     clear_login_fields(new_kw) 
     return new_kw 

# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: 

Но работает это я получаю следующее сообщение об ошибке в браузере.

500 Internal Server Error 

The server encountered an unexpected condition which prevented it from fulfilling the request. 

Traceback (most recent call last): 
    File "/usr/lib/pymodules/python2.6/cherrypy/_cprequest.py", line 606, in respond 
    cherrypy.response.body = self.handler() 
    File "/usr/lib/pymodules/python2.6/cherrypy/_cpdispatch.py", line 25, in __call__ 
    return self.callable(*self.args, **self.kwargs) 
    File "/home/zbeanz/workspace/Sms_authentication/openerp-web-6.0.4/openobject/tools/_expose.py", line 182, in func_wrapper 
    res = func(*args, **kw) 
    File "/home/zbeanz/workspace/Sms_authentication/openerp-web-6.0.4/openobject/controllers/_root.py", line 90, in default 
    return request.handler() 
    File "/usr/lib/pymodules/python2.6/cherrypy/_cpdispatch.py", line 25, in __call__ 
    return self.callable(*self.args, **self.kwargs) 
    File "/home/zbeanz/workspace/Sms_authentication/openerp-web-6.0.4/openobject/tools/_expose.py", line 182, in func_wrapper 
    res = func(*args, **kw) 
    File "/home/zbeanz/workspace/Sms_authentication/openerp-web-6.0.4/addons/openerp/controllers/otp.py", line 83, in index 
    self.otp_check(target, action, message, origArgs) 
    File "/home/zbeanz/workspace/Sms_authentication/openerp-web-6.0.4/openobject/tools/_expose.py", line 222, in func_wrapper 
    return render_template(_template, res).encode("utf-8") 
    File "/home/zbeanz/workspace/Sms_authentication/openerp-web-6.0.4/openobject/tools/_expose.py", line 141, in render_template 
    return utils.NoEscape(template.render_unicode(**kw)) 
    File "/usr/lib/pymodules/python2.6/mako/template.py", line 138, in render_unicode 
    return runtime._render(self, self.callable_, args, data, as_unicode=True) 
    File "/usr/lib/pymodules/python2.6/mako/runtime.py", line 364, in _render 
    _render_context(template, callable_, context, *args, **_kwargs_for_callable(callable_, data)) 
    File "/usr/lib/pymodules/python2.6/mako/runtime.py", line 381, in _render_context 
    _exec_template(inherit, lclcontext, args=args, kwargs=kwargs) 
    File "/usr/lib/pymodules/python2.6/mako/runtime.py", line 414, in _exec_template 
    callable_(context, *args, **kwargs) 
    File "_openobject_controllers_templates_base_mako", line 61, in render_body 
    File "/usr/lib/pymodules/python2.6/mako/runtime.py", line 255, in <lambda> 
    return lambda *args, **kwargs:callable_(self.context, *args, **kwargs) 
    File "_openerp_controllers_templates_otp_mako", line 89, in render_content 
TypeError: 'Undefined' object is not iterable 

В чем причина этой ошибки?

+0

Вы можете указать url, который используете, чтобы достичь индекса? –

ответ

2

Описание ошибки очень ясное.

'Undefined' object is not iterable 

У вас есть объект списка и попробуйте выполнить итерацию в файле mako. Но во время выполнения объект не присваивается значением. поэтому объект не определен. В вашем случае вы итерация только одна переменной

% for key, value in origArgs.items(): 
    <input type="hidden" name="${key}" value="${value}"/> 
% endfor 

проверить, если переменная origArgs имеет значение во время работы. Это хорошо, чтобы справиться с такого рода исключений, как ниже

%if origArgs: 
    % for key, value in origArgs.items(): 
     <input type="hidden" name="${key}" value="${value}"/> 
    % endfor 
%endif 

Если это не один вызывает ошибку, а затем проверить на итерируемыми в файле «/openerp/controllers/templates/base_dispatch.mako». Вы должны быть в состоянии это получить. Если вам еще не повезло, оставьте комментарий ниже. Ура !!

 Смежные вопросы

  • Нет связанных вопросов^_^