我正在尝试计算Django 1.5
项目
我在from datetime import datetime, date
文件中导入了model.py
并编写了如下函数:
def expirationdate(self):
date = datetime.datetime.strptime(date.today(),'%Y-%m-%d')
return date + datetime.timedelta(days=self.premiumduration)
其中self.premiumduration在我的模块中定义如下:
premiumduration = models.IntegerField(blank=True, null=True)
此函数由HTML
模板调用,但会引发以下错误:
/ user / Adriano /
中的AttributeError类型对象'datetime.datetime'没有属性'datetime'
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/user/Adriano/
Django Version: 1.5
Python Version: 2.7.6
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'app_is')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
Template error:
In template C:\Users\Adriano\Desktop\site_is\app_is\templates\user.html, error at line 31
type object 'datetime.datetime' has no attribute 'datetime'
21 : {% endif %}
22 : {% if view_user_profile.card_type == '' %}
23 : <p>Card type: Not Saved
24 : <p>Card Number: Not Saved
25 : {% else %}
26 : <p>Card type: {{ view_user_profile.get_card_type_display }}
27 : <p>Card Number: {{ view_user_profile.cardinfo }}
28 : {% endif %}
29 : {% if view_user_profile.premiumstatus %}
30 : <p>You are a premium user from {{view_user_profile.premiumactivation}}</p>
31 : <p>Your premium subscription will expire {{ view_user_profile.expirationdate }} </p>
32 : {% else %}
33 : <p>You are not a premium user yet! Buy your premium account <a href="/premium/">here!</p>
34 : {% endif %}
35 : {% endif %}
36 :
37 :
38 : {% if view_user == request.user %}
39 : <form action="/modify/" method="get">
40 : <input id="submit" type="button" value="Modify your profile" />
41 : </form>
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
115. response = callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Adriano\Desktop\site_is\app_is\views.py" in userpage
148. return render(request, 'user.html', {'request': request, 'view_user': view_user, 'view_user_profile': view_user_profile})
File "C:\Python27\lib\site-packages\django\shortcuts\__init__.py" in render
53. return HttpResponse(loader.render_to_string(*args, **kwargs),
File "C:\Python27\lib\site-packages\django\template\loader.py" in render_to_string
177. return t.render(context_instance)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
140. return self._render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in _render
134. return self.nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
830. bit = self.render_node(node, context)
File "C:\Python27\lib\site-packages\django\template\debug.py" in render_node
74. return node.render(context)
File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in render
124. return compiled_parent._render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in _render
134. return self.nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
830. bit = self.render_node(node, context)
File "C:\Python27\lib\site-packages\django\template\debug.py" in render_node
74. return node.render(context)
File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in render
63. result = block.nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
830. bit = self.render_node(node, context)
File "C:\Python27\lib\site-packages\django\template\debug.py" in render_node
74. return node.render(context)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py" in render
284. return nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
830. bit = self.render_node(node, context)
File "C:\Python27\lib\site-packages\django\template\debug.py" in render_node
74. return node.render(context)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py" in render
284. return nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
830. bit = self.render_node(node, context)
File "C:\Python27\lib\site-packages\django\template\debug.py" in render_node
74. return node.render(context)
File "C:\Python27\lib\site-packages\django\template\debug.py" in render
84. output = self.filter_expression.resolve(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in resolve
578. obj = self.var.resolve(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in resolve
728. value = self._resolve_lookup(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in _resolve_lookup
779. current = current()
File "C:\Users\Adriano\Desktop\site_is\app_is\models.py" in expirationdate
48. date = datetime.datetime.strptime(self.premiumactivation,'%Y-%m-%d')
Exception Type: AttributeError at /user/Adriano/
Exception Value: type object 'datetime.datetime' has no attribute 'datetime'
答案 0 :(得分:2)
您的问题是:
的组合from datetime import datetime
和
datetime.datetime.strptime(...)
您正在从datetime
模块导入类 datetime
。 strptime
是datetime
类上的一种方法,因此如果您只是使用,则可以修复第一个错误:
datetime.strptime(...)
但是,你会收到关于datetime.timedelta
1 的错误。我认为你实际上想要的是改变import语句:
import datetime
现在,您datetime
访问datetime.datetime
类,就像在原始代码中一样,timedelta
访问了datetime.timedelta
(同样,与原始代码相同)。当然,除非您单独导入(我不建议),否则您需要将date
更改为datetime.date
。
1 我喜欢将其视为编程“Whack-a-mole”