我正在努力使用“实用Django项目”这本书,但这个东西它不起作用。到目前为止你可以找到我的代码here.(没有“链接”类。我刚刚添加了get_absolute_url Entry类,突然间我在渲染时出现了“Caught TypeError:unhashable type:'dict'”尝试访问管理页面时出错。Screenie of what I'm talking about.我从未修改错误中显示的文件中的任何内容:(。我该怎么办?
编辑:添加此内容后发生错误:
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)
那是来自urls.py:
urlpatterns = patterns('django.views.generic.date_based',
(r'^$', 'archive_index', entry_info_dict, 'coltrane_entry_archive_index'),
(r'^(?P<year>\d{4})/$', 'archive_year', entry_info_dict, 'coltrane_entry_archive_year'),
(r'^(?P<year>\d{4})/(?P<month>\w{3})/$', 'archive_month', entry_info_dict, 'coltrane_entry_archive_month'),
(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/$', 'archive_day', entry_info_dict, 'coltrane_entry_archive_day'),
(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/?(?P<slug>[-\w]+)/$', 'object_detail', entry_info_dict, 'coltrane_entry_detail'),
)
答案 0 :(得分:3)
抱歉,您的代码目前尚未加载。
据我所知,您可能正在尝试将dict
实例用作dict
密钥。
例如,你不能这样做:
a = {'1' : 'one'}
b = {a : 'two'}
答案 1 :(得分:1)
你能告诉我你的URLconf中coltrane_entry_detail
url被命名的行吗?至少one old ticket on djangoproject.com表示错误可能是由错误配置的网址格式引起的,如果您刚刚为模型添加了get_absolute_url
方法,我猜您可能还添加了命名视图是指?
答案 2 :(得分:0)
您是否使用pip和virtualenv设置了django环境?您的项目具有以下依赖项:
markdown==2.0.3
django-tagging==0.3.1
我已将上述内容放在项目级别的requirements.txt
文件中。一旦你安装了pip,virtualenv并为该项目创建了一个独特的环境,你可以安装上面的:
pip install -r requirements.txt
完成上一次设置后,您需要将tagging
放入INSTALLED_APPS
的{{1}}中:
settings.py
删除INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'django.contrib.flatpages',
'cms.search',
'coltrane',
'tagging',
)
数据库文件并运行cms.db
。您需要为超级用户提供用户名和密码。我的代码运行正常,我可以访问管理员。
答案 3 :(得分:0)
有些时候我们使用HTTPResponse实例而不是render方法
对于前:
在我的情况下
return HttpResponse(request, 'doctor_list.html', {'list': doctor_list})
此删除与
return render(request, 'doctor_list.html', {'list': doctor_list})