2009-12-10 100 views
0

當我嘗試查看我的Python網站上的一些數據我有這樣的堆棧跟蹤誤差,可能有人給我介紹了作爲的問題是什麼,我這樣失去Python的堆棧跟蹤幫助

Environment: 

Request Method: GET 
Request URL: http://mywesbite.genericdomain.co.uk/admin/shop/passwordresetrequest/4/ 
Django Version: 1.1.1 
Python Version: 2.5.2 
Installed Applications: 
['django.contrib.auth', 
'django.contrib.admin', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'mywebsite.news', 
'mywebsite.store_locator', 
'mywebsite.css_switch', 
'mywebsite.professional', 
'mywebsite.contact', 
'mywebsite.shop', 
'tinymce', 
'captcha'] 
Installed Middleware: 
('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware') 


Template error: 
In template /usr/lib/python2.5/site-packages/django/contrib/admin/templates/admin/change_form.html, error at line 20 
    Caught an exception while rendering: 'PasswordResetRequest' object has no attribute 'date' 
    10 : 


    11 : {% block coltype %}{% if ordered_objects %}colMS{% else %}colM{% endif %}{% endblock %} 


    12 : 


    13 : {% block bodyclass %}{{ opts.app_label }}-{{ opts.object_name.lower }} change-form{% endblock %} 


    14 : 


    15 : {% block breadcrumbs %}{% if not is_popup %} 


    16 : <div class="breadcrumbs"> 


    17 :  <a href="../../../">{% trans "Home" %}</a> &rsaquo; 


    18 :  <a href="../../">{{ app_label|capfirst|escape }}</a> &rsaquo; 


    19 :  {% if has_change_permission %}<a href="../">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %} &rsaquo; 


    20 :  {% if add %}{% trans "Add" %} {{ opts.verbose_name }}{% else %} {{ original|truncatewords:"18" }} {% endif %} 


    21 : </div> 


    22 : {% endif %}{% endblock %} 


    23 : 


    24 : {% block content %}<div id="content-main"> 


    25 : {% block object-tools %} 


    26 : {% if change %}{% if not is_popup %} 


    27 : <ul class="object-tools"><li><a href="history/" class="historylink">{% trans "History" %}</a></li> 


    28 : {% if has_absolute_url %}<li><a href="../../../r/{{ content_type_id }}/{{ object_id }}/" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif%} 


    29 : </ul> 


    30 : {% endif %}{% endif %} 


Traceback: 
File "/usr/lib/python2.5/site-packages/django/core/handlers/base.py" in get_response 
    92.     response = callback(request, *callback_args, **callback_kwargs) 
File "/usr/lib/python2.5/site-packages/django/contrib/admin/sites.py" in root 
    490.     return self.model_page(request, *url.split('/', 2)) 
File "/usr/lib/python2.5/site-packages/django/views/decorators/cache.py" in _wrapped_view_func 
    44.   response = view_func(request, *args, **kwargs) 
File "/usr/lib/python2.5/site-packages/django/contrib/admin/sites.py" in model_page 
    509.   return admin_obj(request, rest_of_url) 
File "/usr/lib/python2.5/site-packages/django/contrib/admin/options.py" in __call__ 
    1098.    return self.change_view(request, unquote(url)) 
File "/usr/lib/python2.5/site-packages/django/db/transaction.py" in _commit_on_success 
    240.     res = func(*args, **kw) 
File "/usr/lib/python2.5/site-packages/django/contrib/admin/options.py" in change_view 
    873.   return self.render_change_form(request, context, change=True, obj=obj) 
File "/usr/lib/python2.5/site-packages/django/contrib/admin/options.py" in render_change_form 
    590.   ], context, context_instance=context_instance) 
File "/usr/lib/python2.5/site-packages/django/shortcuts/__init__.py" in render_to_response 
    20.  return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs) 
File "/usr/lib/python2.5/site-packages/django/template/loader.py" in render_to_string 
    108.  return t.render(context_instance) 
File "/usr/lib/python2.5/site-packages/django/template/__init__.py" in render 
    178.   return self.nodelist.render(context) 
File "/usr/lib/python2.5/site-packages/django/template/__init__.py" in render 
    779.     bits.append(self.render_node(node, context)) 
File "/usr/lib/python2.5/site-packages/django/template/debug.py" in render_node 
    71.    result = node.render(context) 
File "/usr/lib/python2.5/site-packages/django/template/loader_tags.py" in render 
    97.   return compiled_parent.render(context) 
File "/usr/lib/python2.5/site-packages/django/template/__init__.py" in render 
    178.   return self.nodelist.render(context) 
File "/usr/lib/python2.5/site-packages/django/template/__init__.py" in render 
    779.     bits.append(self.render_node(node, context)) 
File "/usr/lib/python2.5/site-packages/django/template/debug.py" in render_node 
    71.    result = node.render(context) 
File "/usr/lib/python2.5/site-packages/django/template/loader_tags.py" in render 
    97.   return compiled_parent.render(context) 
File "/usr/lib/python2.5/site-packages/django/template/__init__.py" in render 
    178.   return self.nodelist.render(context) 
File "/usr/lib/python2.5/site-packages/django/template/__init__.py" in render 
    779.     bits.append(self.render_node(node, context)) 
File "/usr/lib/python2.5/site-packages/django/template/debug.py" in render_node 
    71.    result = node.render(context) 
File "/usr/lib/python2.5/site-packages/django/template/defaulttags.py" in render 
    243.      return self.nodelist_true.render(context) 
File "/usr/lib/python2.5/site-packages/django/template/__init__.py" in render 
    779.     bits.append(self.render_node(node, context)) 
File "/usr/lib/python2.5/site-packages/django/template/debug.py" in render_node 
    71.    result = node.render(context) 
File "/usr/lib/python2.5/site-packages/django/template/loader_tags.py" in render 
    24.   result = self.nodelist.render(context) 
File "/usr/lib/python2.5/site-packages/django/template/__init__.py" in render 
    779.     bits.append(self.render_node(node, context)) 
File "/usr/lib/python2.5/site-packages/django/template/debug.py" in render_node 
    71.    result = node.render(context) 
File "/usr/lib/python2.5/site-packages/django/template/defaulttags.py" in render 
    243.      return self.nodelist_true.render(context) 
File "/usr/lib/python2.5/site-packages/django/template/__init__.py" in render 
    779.     bits.append(self.render_node(node, context)) 
File "/usr/lib/python2.5/site-packages/django/template/debug.py" in render_node 
    71.    result = node.render(context) 
File "/usr/lib/python2.5/site-packages/django/template/defaulttags.py" in render 
    244.    return self.nodelist_false.render(context) 
File "/usr/lib/python2.5/site-packages/django/template/__init__.py" in render 
    779.     bits.append(self.render_node(node, context)) 
File "/usr/lib/python2.5/site-packages/django/template/debug.py" in render_node 
    81.    raise wrapped 

Exception Type: TemplateSyntaxError at /admin/shop/passwordresetrequest/4/ 
Exception Value: Caught an exception while rendering: 'PasswordResetRequest' object has no attribute 'date' 

Original Traceback (most recent call last): 
    File "/usr/lib/python2.5/site-packages/django/template/debug.py", line 71, in render_node 
    result = node.render(context) 
    File "/usr/lib/python2.5/site-packages/django/template/debug.py", line 87, in render 
    output = force_unicode(self.filter_expression.resolve(context)) 
    File "/usr/lib/python2.5/site-packages/django/template/__init__.py", line 572, in resolve 
    new_obj = func(obj, *arg_vals) 
    File "/usr/lib/python2.5/site-packages/django/template/defaultfilters.py", line 37, in _dec 
    args[0] = force_unicode(args[0]) 
    File "/usr/lib/python2.5/site-packages/django/utils/encoding.py", line 71, in force_unicode 
    s = unicode(s) 
    File "/var/www/mywesbite/src/mywebsite/../mywesbite/shop/models.py", line 1105, in __unicode__ 
    return ", ".join((str(self.account),self.date.strftime("%b. %d, %Y, %H:%M %p"))) 
AttributeError: 'PasswordResetRequest' object has no attribute 'date' 

我的模型

class Account(BaseAccount): 
    """ 
    The account is an extension of the Django user and serves as the profile 
    object in user.get_profile() for shop purchases and sessions 
    """ 
    telephone = models.CharField(max_length=32) 
    default_address = models.ForeignKey(Address, related_name='billing_account', blank=True, null=True) 
    security_question = models.ForeignKey(SecurityQuestion) 
    security_answer = models.CharField(max_length=200) 
    how_heard = models.CharField("How did you hear about us?", max_length=100) 
    feedback = models.TextField(blank=True) 
    opt_in = models.BooleanField("Subscribe to mailing list", help_text="Please tick here if you would like to receive updates from %s" % Site.objects.get_current().name) 
    temporary = models.BooleanField() 

    def has_placed_orders(self): 
     """ 
     Returns True if the user has placed at least one order, False otherwise 
     """ 
     return self.order_set.count() > 0 

    def get_last_order(self): 
     """ 
     Returns the latest order that this customer has placed. If no orders 
     have been placed, then None is returned 
     """ 
     try: 
      return self.order_set.all().order_by('-date')[0] 
     except IndexError: 
      return None 

    def get_currency(self): 
     """ 
     Get the currency for this customer. If global currencies are enabled 
     (settings.ENABLE_GLOBAL_CURRENCIES) then this function will return 
     the currency related to their default address, otherwise, it returns 
     the site default 
     """ 
     if settings.ENABLE_GLOBAL_CURRENCIES: 
      return self.default_address.country.currency 
     return Currency.get_default_currency() 
    currency = property(get_currency) 

    def get_gateway_currency(self): 
     """ 
     Get the currency that an order will be put through protx with. If protx 
     currencies are enabled (settings.ENABLE_PROTX_CURRENCIES), then the 
     currency will be the same returned by get_currency, otherwise, the 
     site default is used 
     """ 
     if settings.ENABLE_PROTX_CURRENCIES and settings.ENABLE_GLOBAL_CURRENCIES: 
      return self.currency 
     return Currency.get_default_currency() 
    gateway_currency = property(get_gateway_currency) 


    def password_reset_presave(sender, **kwargs): 
     """ 
     This pre-save is responsible for generating a unique key for the request 
     before it is saved to DB. 
     """ 
     instance = kwargs['instance'] 
     if not instance.key: 
      instance.generate_key() 

class PasswordResetRequest(models.Model): 
    """ 
    Stores a history of all of the password reset requests that have been 
    issued across the site. It is also used to validate resets against a given 
    URL given the key. 
    """ 
    account = models.ForeignKey(Account) 
    key = models.CharField(max_length=100, unique=True) 
    issued = models.DateTimeField(auto_now_add=True) 
    used = models.BooleanField() 

    def is_valid(self): 
     """ 
     Is this password reset request still valid? Returns true if it hasn't 
     yet been successfully used, and was issued any time within the last 
     seven days 
     """ 
     return not self.used and datetime.datetime.now() < self.issued + datetime.timedelta(days=7) 

    def __unicode__(self): 
     """ 
     The unicode representation of this password reset request. It is build 
     using the unicode representation of the customers account, plus the 
     date and time the request was made, in string form 
     """ 
     return ", ".join((str(self.account),self.issued.strftime("%b. %d, %Y, %H:%M %p"))) 

    def generate_key(self): 
     """ 
     Generate a uuid4 key and assign it to this objects key attribute 
     """ 
     from uuid import uuid4 
     self.key = uuid4() 

    class Meta: 
     """ 
     Django meta options 

     verbose_name = "Password Reset Request" 
     verbose_name_plural = "Password Reset Requests" 
     """ 
     verbose_name = "Password Reset Request" 
     verbose_name_plural = "Password Reset Requests" 

pre_save.connect(password_reset_presave, sender=PasswordResetRequest) 
+2

您已經發布不包含來自出錯行的代碼堆棧跟蹤...而不是來自堆棧跟蹤的'self.date.strftime()',此代碼中唯一的__unicode__方法調用'self.issued.strftime()'。你是否遇到錯誤後編輯了代碼?錯誤是否仍然存在? –

+0

是的,我感謝:-) – Udders

回答

0

沒有日期的引用應所發出的

1

看看最後一行:

/var/www/mywesbite/src/mywebsite/../mywesbite/shop/models.py 

__unicode__方法,你有一句臺詞:

return ", ".join((str(self.account),self.date.strftime("%b. %d, %Y, %H:%M %p"))) 

self不知道的date屬性。也許沒有定義。 如果您不確定,請更改此特定返回語句以返回無意義的內容,但此時是正確的,並查看是否唯一錯誤。

5

的顯著件作品是在最後幾行(記得最近一次調用,即:導致錯誤的人,總是在一個堆棧跟蹤最後打印):

File "/var/www/mywesbite/src/mywebsite/../mywesbite/shop/models.py", line 1105, in  
    __unicode__ 
    return ", ".join((str(self.account),self.date.strftime("%b. %d, %Y, %H:%M %p"))) 
    AttributeError: 'PasswordResetRequest' object has no attribute 'date' 

這意味着那麼在1105行的文件mywebsite/shop/models.py(在def __unicode__(self):方法中)中,您調用self.date.strftime(),但該模型沒有名爲date的屬性。

0

那麼問題出在012// /。您嘗試訪問此對象上的self.date並且它沒有日期屬性。

也許如果您粘貼你的模型,我可以幫助更多...

+0

模型作爲一個編輯張貼在原始文章 – Udders