【问题标题】:TemplateSyntaxError after migrating to python 2.7迁移到 python 2.7 后的 TemplateSyntaxError
【发布时间】:2013-07-01 20:27:29
【问题描述】:

我正在从 python2.5 迁移到 python 2.7,并且遇到了数据库索引问题。主页已正确生成,但我无法对数据库进行任何操作(添加条目)而不会出现此错误:

TemplateSyntaxError at /new

Caught NoReverseMatch while rendering: Reverse for 'views.edit' with 
arguments '('',)' and keyword arguments '{}' not found.

Request Method: GET

Exception Type: TemplateSyntaxError

Exception Value:    
Caught NoReverseMatch while rendering: Reverse for 'views.edit' with 
arguments '('',)' and keyword arguments '{}' not found.

Exception Location: /Applications/GoogleAppEngineLauncher.app/Contents/Resources/
GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/django-
1.2/django/template/defaulttags.py in render, line 385


Template error

In template /.../templates/item.html, error at line 5
Caught NoReverseMatch while rendering: Reverse for 'views.edit' with 
arguments '('',)' and keyword arguments '{}' not found.

这是我在第 5 行的内容:

<form action="{%url views.edit item.key.id%}" method="post">

我的 urls.py 包含:

urlpatterns = patterns('', 
    (r'^$', 'views.index'), 
    (r'^new$', 'views.new'), 
    (r'^edit/(\d+)$', 'views.edit'), 
)

在 python 2.5 上运行良好

【问题讨论】:

    标签: python django google-app-engine python-2.7 indexing


    【解决方案1】:

    在这种情况下,错误是因为 item.key.id 当前等于一个空字符串,它与您的 url 模式不匹配。

    代替:

    (r'^edit/(\d+)$', 'views.edit'), 
    

    尝试:

    (r'^edit/(\d*)$', 'views.edit'),
    

    【讨论】:

    • 这个应该改吗? urlpatterns = patterns('', (r'^$', 'views.index'), (r'^new$', 'views.new'), (r'^edit/(\d+)$', ' view.edit'), )
    • 这确实取决于,但如果您将编辑模式中的“+”更改为“*”,那么它将匹配。至于这是否能完全解决你的问题,我不确定。
    猜你喜欢
    • 1970-01-01
    • 2016-06-17
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 2011-12-18
    • 2021-05-18
    • 1970-01-01
    相关资源
    最近更新 更多