代码之家  ›  专栏  ›  技术社区  ›  Ben Collins

Django Unprintable TemplatesyntaxError对象由urlconf引起?

  •  0
  • Ben Collins  · 技术社区  · 16 年前

    我正试图建立一个Django项目,而我的URLCONF似乎有问题。我不确定这是什么交易,下面的错误对我没有完全的帮助。实际上,我认为它与模板呈现没有任何关系,因为我一直在执行路径中执行,直到渲染响应函数完成(在这个过程中,urlconf似乎导致了一个错误),模板对象被正确解析。

    Traceback (most recent call last):
      File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2978, in _HandleRequest
        base_env_dict=env_dict)
      File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 411, in Dispatch
        base_env_dict=base_env_dict)
      File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2244, in Dispatch
        self._module_dict)
      File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2162, in ExecuteCGI
        reset_modules = exec_script(handler_path, cgi_path, hook)
      File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2058, in ExecuteOrImportScript
        exec module_code in script_module.__dict__
      File "C:\Users\Ben\Development\workspace\ringbot\src\main.py", line 52, in <module>
        main()
      File "C:\Users\Ben\Development\workspace\ringbot\src\main.py", line 49, in main
        util.run_wsgi_app(application)
      File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\util.py", line 97, in run_wsgi_app
        run_bare_wsgi_app(add_wsgi_middleware(application))
      File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\util.py", line 115, in run_bare_wsgi_app
        result = application(env, _start_response)
      File "C:\Python25\lib\site-packages\django\core\handlers\wsgi.py", line 241, in __call__
        response = self.get_response(request)
      File "C:\Python25\lib\site-packages\django\core\handlers\base.py", line 134, in get_response
        return self.handle_uncaught_exception(request, resolver, exc_info)
      File "C:\Python25\lib\site-packages\django\core\handlers\base.py", line 154, in handle_uncaught_exception
        return debug.technical_500_response(request, *exc_info)
      File "C:\Python25\lib\site-packages\django\views\debug.py", line 40, in technical_500_response
        html = reporter.get_traceback_html()
      File "C:\Python25\lib\site-packages\django\views\debug.py", line 114, in get_traceback_html
        return t.render(c)
      File "C:\Python25\lib\site-packages\django\template\__init__.py", line 178, in render
        return self.nodelist.render(context)
      File "C:\Python25\lib\site-packages\django\template\__init__.py", line 779, in render
        bits.append(self.render_node(node, context))
      File "C:\Python25\lib\site-packages\django\template\debug.py", line 81, in render_node
        raise wrapped
    TemplateSyntaxError: <unprintable TemplateSyntaxError object>
    

    这是我的顶级URLCONF:

    from django.conf.urls.defaults import *
    
    urlpatterns = patterns('',
       (r'', include('pub.urls')),
    )
    

    和酒吧:

    from django.conf.urls.defaults import *
    import pub
    
    urlpatterns = patterns('pub.views',
        (r'^$', 'index')
    )
    

    和pub.views.index:

    # Create your views here.
    from django.shortcuts import render_to_response
    from django.http import HttpResponse
    import openidgae
    
    # this needs to be moved somewhere else, but for now it can live here
    def index(request):
        lip = openidgae.get_current_person(request, HttpResponse())
        resp = render_to_response('pub/index.html', {'lip': lip}) # exception thrown here
        return resp
    
    3 回复  |  直到 16 年前
        1
  •  1
  •   tylerl    16 年前

    确保每个.py文件的语法正确。跑 python manage.py shell 然后 import 并确保加载时没有错误。由于语法错误是Python中的运行时错误,因此错误有时会出现在奇数处。

        2
  •  0
  •   tylerl    16 年前

    这是另一个建议,将来可能会有用。

    由于许多可能的原因,在Web界面中打印的堆栈跟踪并不总是最佳的。但是,您也可以得到一个到控制台的堆栈跟踪,这可能会给您提供网页上省略的信息。

    最简单的方法是使用内置的Web服务器(即 python manage.py runserver 0.0.0.0:8000 ,然后使用浏览器访问该页面。您应该看到一个堆栈跟踪出现在控制台上的Web服务器日志记录输出的内联中,其中可能包含其他“不可打印”的错误内容。

        3
  •  0
  •   Ben Collins    16 年前

    看起来问题是因为一个noreversMatch异常被抛出,因为我的模板包含一个%url…%}阻止无法解决的问题。从Django站点:请注意,如果您要反转的URL不存在,您将得到一个noreversMatch异常,这将导致您的站点显示一个错误页面。