我得到上面的錯誤,當我調用自定義視圖的方法,__init __()得到了一個意想不到的關鍵字參數「PK」的Django
#views.py
class MyEntryAdmin(admin.ModelAdmin):
review_template = 'admin/polls/myentry/review.html'
def get_urls(self):
urls = super(MyEntryAdmin, self).get_urls()
my_urls = patterns('',
(r'\d+/review/$', self.admin_site.admin_view(self.review)),
)
return my_urls + urls
def review(self, request, id):
entry = MyEntry.objects.get(pk=id)
return render_to_response(self.review_template, {
'title': 'Review entry: %s' % entry.title,
'entry': entry,
'opts': self.model._meta,
'root_path': self.admin_site.root_path,
}, context_instance=RequestContext(request))
admin.site.register(MyEntry, MyEntryAdmin)
#urls.py
urlpatterns = patterns('polls.views'
url(r'^myentry/(?P<pk>\d+)/review/$', 'MyEntryAdmin', name='review')
)
當我調用的URL http://localhost:8000/admin/polls/myentry/1/review/
我得到的錯誤
__init__() got an unexpected keyword argument 'pk'
Traceback:
Environment:
Request Method: GET
Request URL: `http://localhost:8000/admin/polls/myentry/1/review/`
Django Version: 1.6.2
Python Version: 2.7.5
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
Traceback:
File "/home/sun1/projectFolder/myenv/local/lib/python2.7/site-packages/Django-1.6.2-py2.7.egg/django/core/handlers/base.py" in get_response
114. response = wrapped_callback(request, *callback_args, **callback_kwargs)
Exception Type: TypeError at /admin/polls/myentry/1/review/
Exception Value: __init__() got an unexpected keyword argument 'pk'
您是否有錯誤的相關跟蹤? – EyasSH
我已添加跟蹤,謝謝。 – user3575232
有趣。在urls.py(你的代碼的最後一部分)中使用'pk'會不會是問題? – EyasSH