python - 迁移 Django 1.1.1 -> 1.2.1 : {% url %} doesn't work

标签 python django

我正在将一个 django 项目从 1.1.1 迁移到 1.2.1

现在 {% url %} 标签不起作用,@models.permalink 修饰的 get_absulute_url 也不起作用

即我明白了

TemplateSyntaxError at /
Caught TypeError while rendering: __init__() got an unexpected keyword argument 'error_message'

对于

<li><a href="{% url archive_talks %}">talks</a></li>

虽然 url-pattern 看起来像这样:

url(r'^archive/talks/$', 'talkapp.views.archive_talks', name="archive_talks"),

有人遇到同样的问题吗?有解决办法吗?

回溯

Environment:

Request Method: GET
Request URL: http://localhost:8000/
Django Version: 1.2.1
Python Version: 2.6.1
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.humanize',
 'django.contrib.markup',
 'pinax.templatetags',
 'notification',
 'django_openid',
 'emailconfirmation',
 'django_extensions',
 'robots',
 'mailer',
 'messages',
 'announcements',
 'oembed',
 'djangodblog',
 'pagination',
 'threadedcomments',
 'threadedcomments_extras',
 'timezones',
 'voting',
 'voting_extras',
 'tagging',
 'blog',
 'ajax_validation',
 'avatar',
 'flag',
 'locations',
 'uni_form',
 'django_sorting',
 'django_markup',
 'staticfiles',
 'analytics',
 'profiles',
 'account',
 'signup_codes',
 'tag_app',
 'topics',
 'groups',
 'django.contrib.admin',
 'smartif',
 'annoying',
 'haystack',
 'talkapp']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django_openid.consumer.SessionConsumer',
 'account.middleware.LocaleMiddleware',
 'django.middleware.doc.XViewMiddleware',
 'pagination.middleware.PaginationMiddleware',
 'django_sorting.middleware.SortingMiddleware',
 'djangodblog.middleware.DBLogMiddleware',
 'pinax.middleware.security.HideSensistiveFieldsMiddleware',
 'django.middleware.transaction.TransactionMiddleware')


Template error:
In template /Users/vikingosegundo/Coding/horizonte/social/templates/base.html, error at line 76
   Caught TypeError while rendering: __init__() got an unexpected keyword argument 'error_message'
   66 :             </ul>


   67 :             </div>


   68 :             {% endif %}


   69 :             


   70 :              {% get_sorted_items talkapp.semester all by -semesterStart as semesters %}


   71 : 


   72 :             {% if semesters%}


   73 :             <div class="portlet">


   74 :             <h3>Archive</h3>


   75 :             <ul>


   76 :                 <li><a href=" {% url archive_of_talks     %} ">talks</a></li>


   77 :                 <li><a href="{% url archive_of_lectures  %}">persons</a></li>


   78 :                 <li><a href="{% url archive_of_semesters %}">semester</a></li>


   79 :             </ul>


   80 :             <ul>


   81 :             {% for n in semesters %}


   82 :                 <li>


   83 :                     <a href="{{ n.get_absolute_url }}">{{ n.semester_name    }}</a>


   84 :                 </li>


   85 :             {% endfor %}


   86 :             </ul>


Traceback:
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/core/handlers/base.py" in get_response
  100.                     response = callback(request, *callback_args, **callback_kwargs)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/views/generic/simple.py" in direct_to_template
  18.     return HttpResponse(t.render(c), mimetype=mimetype)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/template/__init__.py" in render
  173.             return self._render(context)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/template/__init__.py" in _render
  167.         return self.nodelist.render(context)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/template/__init__.py" in render
  796.                 bits.append(self.render_node(node, context))
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/template/debug.py" in render_node
  72.             result = node.render(context)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/template/loader_tags.py" in render
  125.         return compiled_parent._render(context)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/template/__init__.py" in _render
  167.         return self.nodelist.render(context)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/template/__init__.py" in render
  796.                 bits.append(self.render_node(node, context))
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/template/debug.py" in render_node
  72.             result = node.render(context)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/template/loader_tags.py" in render
  125.         return compiled_parent._render(context)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/template/__init__.py" in _render
  167.         return self.nodelist.render(context)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/template/__init__.py" in render
  796.                 bits.append(self.render_node(node, context))
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/template/debug.py" in render_node
  72.             result = node.render(context)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/template/loader_tags.py" in render
  62.             result = block.nodelist.render(context)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/template/__init__.py" in render
  796.                 bits.append(self.render_node(node, context))
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/template/debug.py" in render_node
  72.             result = node.render(context)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django_smartif-0.1-py2.6.egg/smartif/templatetags/smartif.py" in render
  278.             return self.nodelist_true.render(context)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/template/__init__.py" in render
  796.                 bits.append(self.render_node(node, context))
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/template/debug.py" in render_node
  72.             result = node.render(context)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/template/defaulttags.py" in render
  366.             url = reverse(self.view_name, args=args, kwargs=kwargs, current_app=context.current_app)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/core/urlresolvers.py" in reverse
  350.             *args, **kwargs)))
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/core/urlresolvers.py" in reverse
  271.         possibilities = self.reverse_dict.getlist(lookup_view)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/core/urlresolvers.py" in _get_reverse_dict
  193.             self._populate()
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/core/urlresolvers.py" in _populate
  173.                     for name in pattern.reverse_dict:
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/core/urlresolvers.py" in _get_reverse_dict
  193.             self._populate()
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/core/urlresolvers.py" in _populate
  162.         for pattern in reversed(self.url_patterns):
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/core/urlresolvers.py" in _get_url_patterns
  243.         patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/core/urlresolvers.py" in _get_urlconf_module
  238.             self._urlconf_module = import_module(self.urlconf_name)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/utils/importlib.py" in import_module
  35.     __import__(name)
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/pinax/apps/blog/urls.py" in <module>
  3. from blog import views, models
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/pinax/apps/blog/views.py" in <module>
  13. from blog.forms import *
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/pinax/apps/blog/forms.py" in <module>
  7. class BlogForm(forms.ModelForm):
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/pinax/apps/blog/forms.py" in BlogForm
  11.         error_message = _("This value must contain only letters, numbers, underscores and hyphens."))
File "/Users/vikingosegundo/Coding/horizonte/pinax-env/lib/python2.6/site-packages/django/forms/fields.py" in __init__
  184.         super(CharField, self).__init__(*args, **kwargs)

Exception Type: TemplateSyntaxError at /
Exception Value: Caught TypeError while rendering: __init__() got an unexpected keyword argument 'error_message'

最佳答案

这个问题与实际的 {% url %} 标签无关。你在那个标签上打它的原因是 URL 反转的过程实际上导入了你所有的 Django View ,并且在一个完全不同的地方有一个错误:BlogForm 类。

如果没有这种形式的代码,就很难准确判断那里出了什么问题,尽管它似乎确实传递了 error_message 参数,而不是 error_messages(带有 s ).

关于python - 迁移 Django 1.1.1 -> 1.2.1 : {% url %} doesn't work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3186502/

相关文章:

Django 使用 `method==' POST' :` 检查每个 View 是否有好处

python - 无法使用 Bitbucket 管道部署到 EB

python - 投票 If/Else/Elif

python - 我怎样才能确保对函数的递归调用是我认为的那样?

python - Django 注释问题

python - Django:无法将模型中的用户配置文件数据插入模板中

python - python对象的sqlalchemy from_statement动态属性

python - 多边形与线的交点 | python 身材匀称

python - Django 查询集按 _set 排序

django - 更改 Django 管理列表布局