【问题标题】:Manually dispatch a Django Class Based View手动调度基于 Django 类的视图
【发布时间】:2015-12-14 17:09:56
【问题描述】:

我的应用程序非常简单,它有一个基于 WeekArchiveView 类的视图:

class MenuWeekArchiveView(WeekArchiveView):
    queryset = Menu.objects.all()

及其对应的网址:

url(r'^(?P<year>[0-9]{4})/week/(?P<week>[0-9]+)/$', menu.views.MenuWeekArchiveView.as_view(), name="menu_week"),

我想让我的应用程序主页返回本周。

使用旧的基于函数的视图,这很容易。我只是让主页返回以当前周数作为参数的函数。

today = datetime.date.today()
current_week_number = today.isocalendar()[1]
current_year = today.year
return week_view(request, year=current_year, week=current_week_number)

重定向是不可接受的,因为当有人为页面添加书签时,他们将在该周添加书签。

【问题讨论】:

    标签: django


    【解决方案1】:

    View.as_view() 返回一个您可以使用的正确视图函数:

    today = datetime.date.today()
    current_week_number = today.isocalendar()[1]
    current_year = today.year
    return MenuWeekArchiveView.as_view()(request, year=current_year, week=current_week_number)
    

    【讨论】:

    • 我在故障排除时尝试了类似的方法,但得到:view() 至少需要 1 个参数(给定 0)
    • @Ben174 听起来好像您忘记包含 request 参数。
    • 我完全做到了!你有忍者编辑吗? ;-) 非常感谢您的帮助,现在完美运行!我会在允许的情况下接受他的回答。
    • @Ben174 是的,我也忘记了请求:P
    猜你喜欢
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 2015-03-05
    • 2014-02-16
    • 1970-01-01
    相关资源
    最近更新 更多