0
私はDjango 1.11.3を使用しています。管理者の一部のモデルで[保存]ボタンを押した後にユーザーをリダイレクトしようとしています。だから、次のコード(その一部)に私が持っている私のadmin.py
ファイルに:私はボタンを押した後'NoneType'オブジェクトに属性がありません 'has_header'
from django.contrib import admin
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.http import HttpResponseRedirect
from .models import Info
class InfoAdmin(admin.ModelAdmin):
def response_change(self, request, object, form_url=''):
if(object.type == 1):
return HttpResponseRedirect('/admin/pict/data/add/?info=' + str(object.info))
else:
return HttpResponseRedirect('/admin/pict/article/')
admin.site.register(Info, InfoAdmin)
が、私は次のエラーを取得する:
AttributeError at /admin/pict/info/58/change/
'NoneType' object has no attribute 'has_header'
私はredirect
とHttpResponse
でも試してみましたただし、エラーは継続します。
全トレースバック:私は間違って何をやっている
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/admin/pict/info/58/change/
Django Version: 1.11.3
Python Version: 3.5.2
Installed Applications:
['pict.apps.PictConfig',
'suit',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'massadmin']
Installed Middleware:
['whitenoise.middleware.WhiteNoiseMiddleware',
'django.middleware.security.SecurityMiddleware',
'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 "/Users/mick/.virtualenvs/gbs/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
41. response = get_response(request)
File "/Users/mick/.virtualenvs/gbs/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/Users/mick/.virtualenvs/gbs/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/mick/.virtualenvs/gbs/lib/python3.5/site-packages/django/contrib/admin/options.py" in wrapper
551. return self.admin_site.admin_view(view)(*args, **kwargs)
File "/Users/mick/.virtualenvs/gbs/lib/python3.5/site-packages/django/utils/decorators.py" in _wrapped_view
149. response = view_func(request, *args, **kwargs)
File "/Users/mick/.virtualenvs/gbs/lib/python3.5/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
58. add_never_cache_headers(response)
File "/Users/mick/.virtualenvs/gbs/lib/python3.5/site-packages/django/utils/cache.py" in add_never_cache_headers
274. patch_response_headers(response, cache_timeout=-1)
File "/Users/mick/.virtualenvs/gbs/lib/python3.5/site-packages/django/utils/cache.py" in patch_response_headers
265. if not response.has_header('Expires'):
Exception Type: AttributeError at /admin/pict/info/58/change/
Exception Value: 'NoneType' object has no attribute 'has_header'
?
ありがとうございます!毎回、 'obj.type'が** 1 **(印刷に基づく)であっても'/admin/pict/article/'にリダイレクトされます。何か案が? – user8980530
'repr(obj.type)'と 'type(obj.type)'が何であるかを確認してください。おそらく 'obj.type'は文字列' '1'であり、整数 '1'ではありません。 – Alasdair
はい、タイプが問題でした。どうもありがとう! – user8980530