django의 관리자보기 소스 코드를 읽었으므로보기에 키워드 인수를 허용하지 않습니다.django가 미들웨어를 추가 한 후 예기치 않은 키워드 인수가 발생했습니다.
이제는 문제가됩니다. 어떻게 장고의 관리자에게 내 자신의 변수를 전달할 수 있습니까? 장고의 기본보기 확장을 제외하고보기?
기본보기와 해당 URL 설정을 변경하고 싶지 않습니다. 다른 방법으로 을 확장 할 수 있습니까?
내 공개 변수를 모두 내보기에 전달하기 위해 내 자신의 장고 미들웨어를 작성합니다.
하지만 djano 관리자보기를 사용할 때 django가 예기치 않은 키워드 인수를 만난다.
이 문제에 대한 도움을 찾을 수 없으며 django의 문서에서 예제를 찾을 수 없습니다.
다음 링크는 내가 찾은 것입니다.
Django view got an unexpected keyword argument
"got an unexpected keyword argument 'ticket_id'"
내가 아래에있는 내 코드가 나열됩니다 :
middleware.py을
from blog.data import (UserInfo,BasicInfo,APost,HeaderMenu,PostSummary,TagsGetter,
ArchivesIndex,PostsGetter,CommentsGetter,TTypeGetter,LinkGetter)
class data_md(object):
"""pass some kwargs to view to share public data"""
def process_view(self, request, view_func, view_args, view_kwargs):
#if 'djangoadmin' not in request.path:
if True:
view_kwargs['posts_getter'] = PostsGetter()
view_kwargs['user_info'] = UserInfo(request)
view_kwargs['basic_info'] = BasicInfo(request)
view_kwargs['header_menu'] = HeaderMenu()
view_kwargs['comments_getter'] = CommentsGetter()
view_kwargs['tags_getter'] = TagsGetter()
view_kwargs['ttype_getter'] = TTypeGetter()
view_kwargs['link_getter'] = LinkGetter()
return view_func(request, view_args, view_kwargs)
블로그 views.py
def tags_view(request, args, data):
tag = data.get('tagname',None)
tags_getter = data.get('tags_getter',None)
if tag in tags_getter.tagnamelist:
from blog.data import get_summarys_bytag
post_summarys = get_summarys_bytag(tag)
return render_to_response('blog/read_bytags.html',locals())
else:
raise Http404
참고 :이보기는 정상적으로 작동하지만 장고의 관리자보기가 작동하지 않습니다.
오류 메시지 : 당신의 도움에 대한
Environment:
Request Method: GET
Request URL: http://127.0.0.1/djangoadmin/
Django Version: 1.5.4
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.admindocs',
'blog')
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',
'django.middleware.transaction.TransactionMiddleware',
'blog.middleware.data_md')
Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
109. response = middleware_method(request, callback, callback_args, callback_kwargs)
File "/root/win7/app/django/pycms/blog/middleware.py" in process_view
20. return view_func(request, *view_args, **view_kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/sites.py" in wrapper
219. return self.admin_view(view, cacheable)(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view
91. response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/cache.py" in _wrapped_view_func
89. response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/sites.py" in inner
202. return view(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/cache.py" in _wrapped_view_func
89. response = view_func(request, *args, **kwargs)
Exception Type: TypeError at /djangoadmin/
Exception Value: index() got an unexpected keyword argument 'header_menu'
감사합니다. 장고 문서에서
감사합니다 :) 당신의 도움 :)에 대한 –
덕분에,이 방법은 작동 중순 처리기 소스 코드에서 내가 결론을 이끌어 내는데 도움이되는 것을 찾을 수 없다. 오히려 장고 자신의 미들웨어 소스 코드에서 process_view()에 대해 sth를 찾을 수 없다. –
이 경우 process_view() 대신 process_request() 함수를 사용할 수 있지만 process_view의 존재 가치는 무엇입니까? :) –