【问题标题】:AttributeError: 'EventView' object has no attribute 'get'AttributeError:“EventView”对象没有属性“get”
【发布时间】:2025-12-09 11:35:01
【问题描述】:

我正在开发一个日历应用程序。我在网页上遇到以下错误。这是我的views.py。有人可以帮我解决这个问题吗?提前致谢

views.py

​​>
from __future__ import unicode_literals
from django.shortcuts import render
from events.models import Event
import datetime
import calendar
from django.urls import reverse
from django.utils.safestring import mark_safe
from events.utils import EventCalendar
# Register your models here.

class EventView(Event):
    list_display = ['day', 'start_time', 'end_time', 'notes']
    change_list_template = 'admin/events/change_list.html'

    def changelist_view(self, request, extra_context=None):
        after_day = request.GET.get('day__gte', None)
        extra_context = extra_context or {}

        if not after_day:
            d = datetime.date.today()
        else:
            try:
                split_after_day = after_day.split('-')
                d = datetime.date(year=int(split_after_day[0]), month=int(split_after_day[1]), day=1)
            except:
                d = datetime.date.today()

        previous_month = datetime.date(year=d.year, month=d.month, day=1)  # find first day of current month
        previous_month = previous_month - datetime.timedelta(days=1)  # backs up a single day
        previous_month = datetime.date(year=previous_month.year, month=previous_month.month,
                                       day=1)  # find first day of previous month

        last_day = calendar.monthrange(d.year, d.month)
        next_month = datetime.date(year=d.year, month=d.month, day=last_day[1])  # find last day of current month
        next_month = next_month + datetime.timedelta(days=1)  # forward a single day
        next_month = datetime.date(year=next_month.year, month=next_month.month,
                                   day=1)  # find first day of next month

        extra_context['previous_month'] = reverse('admin:events_event_changelist') + '?day__gte=' + str(
            previous_month)
        extra_context['next_month'] = reverse('admin:events_event_changelist') + '?day__gte=' + str(next_month)

        cal = EventCalendar()
        html_calendar = cal.formatmonth(d.year, d.month, withyear=True)
        html_calendar = html_calendar.replace('<td ', '<td  width="150" height="150"')
        extra_context['calendar'] = mark_safe(html_calendar)
        return super(EventAdmin, self).changelist_view(request, extra_context)

这是我终端中的错误

Traceback(最近一次调用最后一次):文件“C:\Users\vikas visking\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\exception.p y",第 35 行,在内部 response = get_response(request) File "C:\Users\vikas visking\AppData\Local\Programs\Python\Python36\lib\site-packages\django\utils\deprecation.py", 第 97 行,在通话中 response = self.process_response(request, response) 文件“C:\Users\vikas visking\AppData\Local\Programs\Python\Python36\lib\site-packages\django\middleware\clickjacking.p y”,第 26 行,在 process_response 中 如果 response.get('X-Frame-Options') 不是 None: AttributeError: 'EventView' object has no attribute 'get' [18/Apr/2018 21:23:56] "GET /events/ HTTP/1.1" 500 56977

【问题讨论】:

    标签: python django


    【解决方案1】:

    试试:

    from django.views.generic import ListView
    class EventView(ListView):
        model = Event
    

    【讨论】:

      【解决方案2】:

      您似乎正在尝试创建自定义模型管理员。在这种情况下,您应该继承 admin.ModelAdmin

      from django.contrib import admin
      
      class EventAdmin(admin.ModelAdmin):
          list_display = ['day', 'start_time', 'end_time', 'notes']
          change_list_template = 'admin/events/change_list.html'
      
      admin.site.register(Event, EventAdmin)
      

      此代码属于您的admin.py,而不是您的视图。

      【讨论】:

      • 是的,先生,此代码属于 admin.py,但我正在尝试为 views.py 中的用户创建自定义视图
      • 如果您正在编写视图,那么我不会从模型管理代码开始。它不是很可重复使用。
      • 我知道先生这就是为什么我需要你的帮助。我想为用户制作相同的模块我应该怎么做..提前感谢先生您回复
      • 我无法将该代码转换为您的正常视图。我建议您从最简单的视图开始,然后开始为其添加功能。当您遇到困难时,请提出一个新问题。
      最近更新 更多