get_absolute_url问题。错误捕获ViewDoesNotExist

时间:2012-01-29 23:47:40

标签: python mysql django

我正在使用Practical Django Proects而且我被困住了。我收到错误:

  

渲染时捕获ViewDoesNotExist:在模块tagging.views中尝试了tagged_objects_list。错误是:'module'对象没有属性'tagged_objects_list'。

如果我将entry_archive.html中的所有“对象”更改为“entry”,则该错误消失,但object.get_absolute_url除外。然后我点击“读取完整条目”并重定向到/ weblog /而不是绝对URL。奇怪的是,如果我将所有“对象”引用保留为“对象”并将该行更改为entry.get_absolute_url,则错误消失但上述/ weblog /重定向仍然会发生。

/cms/urls.py:

url(r'^weblog/', include('coltrane.urls.entries')),

/coltrane/urls/entries.py

from django.conf.urls.defaults import *
from coltrane.models import Entry

# define entry_info_dict used for generic view
entry_info_dict = {
    'queryset': Entry.objects.all(),
    'date_field': 'pub_date',
}

# Generic Views URL Patterns
urlpatterns = patterns('django.views.generic.date_based',
    # Weblog index - Generic View
    url(r'^$', 'archive_index', entry_info_dict, 'coltrane_entry_archive_index'),
    # Archive year - Generic View
    url(r'^(?P<year>\d{4})/$', 'archive_year', entry_info_dict,      'coltrane_entry_archive_year'),
    # Archive month - Generic View
    url(r'^(?P<year>\d{4})/(?P<month>\w{3})/$', 'archive_month', entry_info_dict, 'coltrane_entry_archive_month'),
    # Archive day - Generic View
    url(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/$', 'archive_day', entry_info_dict, 'coltrane_entry_archive_day'),
    # Weblog detail - Generic View
    url(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$', 'object_detail', entry_info_dict, 'coltrane_entry_detail'),
)

entry_archive.html内容:

<div id="contentarea">
    {% block content %}
        {% for object in latest %}
            <h2>{{ object.title }}</h2>
            <p>Published on {{ object.pub_date|date:"F j, Y" }}</p>
            {% if object.excerpt_html %}
                {{ object.excerpt_html|safe }}
            {% else %}
                {{ object.body_html|truncatewords_html:"50"|safe }}
            {% endif %}
            <p><a href="{{ object.get_absolute_url }}">Read full entry</a></p>
            <br>
        {% endfor %}
    {% endblock %}
</div>

models.py中的条目的绝对网址:

def get_absolute_url(self):
    return ('coltrane_entry_detail', (), { 'year': self.pub_date.strftime("%Y"),
                                          'month': self.pub_date.strftime("%b").lower(),
                                          'day': self.pub_date.strftime("%d"),
                                          'slug': self.slug })
get_absolute_url = models.permalink(get_absolute_url)

我在搜索时发现了类似的问题,但大多数问题似乎都是通过网络日志的网址来解决的,而不是我的情况。为了确保我已经尝试将coltrane / urls / entries.py中的第一个url更改为url(r'^'而不是url(r'^ $',我仍然会遇到同样的问题。

由于

2 个答案:

答案 0 :(得分:2)

您不应该在reverse()中致电models.permalink - 只需返回元组。

return reverse(...)应为return (...)

答案 1 :(得分:1)

该错误与get_absolute_url无关。您似乎尝试过在某处调用名为tagged_objects_list的函数或属性