首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError: CheckNewsDateStatus()不带参数

TypeError: CheckNewsDateStatus()不带参数
EN

Stack Overflow用户
提问于 2021-12-30 12:17:45
回答 1查看 48关注 0票数 1

我正在尝试将django/夹层应用程序从python2.7更新到python3.7。你能帮我修复下面的错误(CheckNewsDateStatus() takes no arguments)吗?

似乎根本不使用这个类;如果我通过所有代码进行grep,那么只匹配附加的settings.py和middleware.py。它是在django/夹层中部分实现的,还是为了将整个类删除为不必要的?

我不知道代码是如何工作的,我也不知道这个特性是否已经被使用过.

代码语言:javascript
复制
(python-3.7) miettinj@ramen:~/pika> python manage.py runserver
BASE_DIR /srv/work/miettinj/pika
PROJECT_ROOT /srv/work/miettinj/pika/pika
/srv/work/miettinj/python-3.7/lib/python3.7/site-packages/mezzanine/utils/timezone.py:13: PytzUsageWarning: The zone attribute is specific to pytz's interface; please migrate to a new time zone provider. For more details on how to do so, see https://pytz-deprecation-shim.readthedocs.io/en/latest/migration.html
  zone_name = tzlocal.get_localzone().zone
/srv/work/miettinj/python-3.7/lib/python3.7/site-packages/mezzanine/utils/conf.py:67: UserWarning: TIME_ZONE setting is not set, using closest match: Europe/Helsinki
  warn("TIME_ZONE setting is not set, using closest match: %s" % tz)
BASE_DIR /srv/work/miettinj/pika
PROJECT_ROOT /srv/work/miettinj/pika/pika
/srv/work/miettinj/python-3.7/lib/python3.7/site-packages/mezzanine/utils/timezone.py:13: PytzUsageWarning: The zone attribute is specific to pytz's interface; please migrate to a new time zone provider. For more details on how to do so, see https://pytz-deprecation-shim.readthedocs.io/en/latest/migration.html
  zone_name = tzlocal.get_localzone().zone
/srv/work/miettinj/python-3.7/lib/python3.7/site-packages/mezzanine/utils/conf.py:67: UserWarning: TIME_ZONE setting is not set, using closest match: Europe/Helsinki
  warn("TIME_ZONE setting is not set, using closest match: %s" % tz)
Watching for file changes with StatReloader
              .....
          _d^^^^^^^^^b_
       .d''           ``b.
     .p'                `q.
    .d'                   `b.
   .d'                     `b.   * Mezzanine 5.0.0
   ::                       ::   * Django 2.2
  ::    M E Z Z A N I N E    ::  * Python 3.7.10
   ::                       ::   * PostgreSQL 9.3.0
   `p.                     .q'   * Linux 5.3.18-lp152.102-default
    `p.                   .q'
     `b.                 .d'
       `q..          ..p'
          ^q........p^
              ''''

Performing system checks...

System check identified no issues (0 silenced).
December 30, 2021 - 13:44:54
Django version 2.2, using settings 'pika.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/opt/python/lib/python3.7/threading.py", line 926, in _bootstrap_inner
    self.run()
  File "/opt/python/lib/python3.7/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/srv/work/miettinj/python-3.7/lib/python3.7/site-packages/django/utils/autoreload.py", line 54, in wrapper
    fn(*args, **kwargs)
  File "/srv/work/miettinj/python-3.7/lib/python3.7/site-packages/mezzanine/core/management/commands/runserver.py", line 170, in inner_run
    super().inner_run(*args, **kwargs)
  File "/srv/work/miettinj/python-3.7/lib/python3.7/site-packages/django/core/management/commands/runserver.py", line 137, in inner_run
    handler = self.get_handler(*args, **options)
  File "/srv/work/miettinj/python-3.7/lib/python3.7/site-packages/mezzanine/core/management/commands/runserver.py", line 173, in get_handler
    handler = super().get_handler(*args, **options)
  File "/srv/work/miettinj/python-3.7/lib/python3.7/site-packages/django/contrib/staticfiles/management/commands/runserver.py", line 27, in get_handler
    handler = super().get_handler(*args, **options)
  File "/srv/work/miettinj/python-3.7/lib/python3.7/site-packages/django/core/management/commands/runserver.py", line 64, in get_handler
    return get_internal_wsgi_application()
  File "/srv/work/miettinj/python-3.7/lib/python3.7/site-packages/django/core/servers/basehttp.py", line 42, in get_internal_wsgi_application
    return get_wsgi_application()
  File "/srv/work/miettinj/python-3.7/lib/python3.7/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
    return WSGIHandler()
  File "/srv/work/miettinj/python-3.7/lib/python3.7/site-packages/django/core/handlers/wsgi.py", line 135, in __init__
    self.load_middleware()
  File "/srv/work/miettinj/python-3.7/lib/python3.7/site-packages/django/core/handlers/base.py", line 37, in load_middleware
    mw_instance = middleware(handler)
TypeError: CheckNewsDateStatus() takes no arguments

middlewary.py:

代码语言:javascript
复制
class CheckNewsDateStatus(object):
    def process_request(self, request):
        if '/uutinen/' in request.path:
            try:
                path_to_go_raw = request.path
                true_slug = path_to_go_raw.split('/uutinen/')[1:]
                news_obj = Uutinen.objects.get(slug=true_slug[0])
                now_utc = pytz.utc.localize(datetime.now())
                
                hel = pytz.timezone("Europe/Helsinki")
                foo = news_obj.publish_date.astimezone(hel)
                
                if foo.date() < now_utc.date() and news_obj.status == 2:
                    pass
                elif foo.date() == now_utc.date() and foo.time() < now_utc.time()  and news_obj.status == 2:
                    pass
                else:
                    if request.user.is_authenticated():
                        pass
                    elif news_obj.status == 1:
                        return HttpResponseNotFound('404')
                    else:
                        return HttpResponseNotFound('404')
            except:
                pass

settings.py:

代码语言:javascript
复制
# List of middleware classes to use. Order is important; in the request phase,
# these middleware classes will be applied in the order given, and in the
# response phase the middleware will be applied in reverse order.
MIDDLEWARE = (
    'page_types.middleware.SetDynamicSite',
#    'debug_toolbar.middleware.DebugToolbarMiddleware',
    "mezzanine.core.middleware.UpdateCacheMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    #"django.middleware.locale.LocaleMiddleware",
    "statfi_search.middleware.locale.LocaleMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.middleware.common.CommonMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "mezzanine.core.request.CurrentRequestMiddleware",
    "mezzanine.core.middleware.RedirectFallbackMiddleware",
    "mezzanine.core.middleware.TemplateForDeviceMiddleware",
    "mezzanine.core.middleware.TemplateForHostMiddleware",
    "mezzanine.core.middleware.AdminLoginInterfaceSelectorMiddleware",
    "mezzanine.core.middleware.SitePermissionMiddleware",
    # Uncomment the following if using any of the SSL settings:
    # "mezzanine.core.middleware.SSLRedirectMiddleware",
    "mezzanine.pages.middleware.PageMiddleware",
    "mezzanine.core.middleware.FetchFromCacheMiddleware",
    'page_types.middleware.RedirectMiddleware',
    'page_types.middleware.CheckNewsDateStatus',
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-30 12:53:59

由于您使用的是Django 2.2,所以中间件类必须接受一个get_response参数:

你应该这样定义你的班级。

代码语言:javascript
复制
class CheckNewsDateStatus(object):
    def __init__(self, get_response):
        self.get_response = get_response 

    def process_request(self, request):
        ....

此外,在Python3+中定义类时不需要编写(对象)。

供你参考,文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70531576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档