2009-11-24 108 views
0

我想要设置一个django项目,而且我似乎遇到了我的urlconf问题。我不确定交易是什么,下面的错误对我并不完全有帮助。实际上,我认为它实际上与模板渲染没有任何关系,因为直到render_to_response函数完成之前(这是urlconf似乎导致错误的地方),并且模板对象被解析正确。由urlconf引起的django unprintable templatesyntaxerror对象?

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> 

这里是我的顶级URL配置:

from django.conf.urls.defaults import * 

urlpatterns = patterns('', 
    (r'', include('pub.urls')), 
) 

而且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 
+0

为什么在你的urls.py中导入pub? – googletorp

+0

pub是一个django应用程序。这是现在唯一的一个,并且将是默认设置。最终会有其他几个,当我到达那里时,它们的url模块也会被导入。 –

+0

看起来像问题是因为NoReverseMatch异常被抛出,因为我的模板包含无法解析的{%url ...%}块。从django网站: 请注意,如果您正在翻转的网址不存在,您会收到NoReverseMatch异常,这会导致您的网站显示错误页面。 –

回答

0

看起来像问题是因为NoReverseMatch异常被抛出,因为我的模板包含无法解析的{%url ...%}块。从django网站:请注意,如果您正在翻转的网址不存在,您会收到NoReverseMatch异常,这会导致您的网站显示错误页面。

1

确保每个.py文件在语法上都是正确的。运行python manage.py shell,然后运行import每个模块,并确保它加载时没有错误。由于语法错误是Python中的运行时错误,因此错误有时会出现在奇怪的时间和奇怪的地方。

+0

很好的建议,但在这种情况下,我可以导入我的顶级模块以及“pub”模块。 –

0

这是另一个可以在未来派上用场的建议。

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

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