当前位置: 首页 > 知识库问答 >
问题:

包装器()获得意外的关键字参数“id”

齐朝明
2023-03-14

我有wiev功能:

@login_required
def index(request):

@login_required
def detail(request, id):

装饰:

@decorator
def login_required(wiev_function, request, *args, **kwargs):
    print(args)
    print(kwargs)
    if not request.user.is_authenticated():
        return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
    return wiev_function(request, *args, **kwargs)

"index"函数正常工作,但"细节"向下错误:

TypeError:包装器()获得意外的关键字参数“id”

P.S.id参数在url模式中

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^new/(?P<id>\d+)/$', views.new, name = 'new'),

共有2个答案

昝唯
2023-03-14

我会这样解决:

#decorator
def login_required(func):
    def wrapper(*args, **kwargs):
        if not args[0]:
            return print('not valid')
        return func(*args, **kwargs)
    return wrapper

@login_required
def index(request):
    print('1')

@login_required
def detail(request, id):
    print('2')

index(True)
index(False)
detail(True, 1)
detail(False, 1)
尉迟景福
2023-03-14

这不是你写装饰的方式。decorator是一个返回另一个函数的函数;然后,该内部函数必须执行一些逻辑并(可选地)调用修饰函数。外部函数本身不接受传递给原始函数的参数;内部函数不起作用。

def login_required(view_function):
    def inner(request, *args, **kwargs):
        print(args)
        print(kwargs)
        if not request.user.is_authenticated():
            return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
        return view_function(request, *args, **kwargs)
    return inner

然而,所有这些似乎都毫无意义,因为Django已经提供了所需的login\udecorator。

 类似资料:
  • 我尝试使用pandas DataFrame的pivot_table方法; 但是,我收到以下错误: 上述命令摘自Wes McKinney(pandas的创建者)的《Python用于数据分析》一书

  • 我试图用Python的Pymoo库设置我的优化,我使用他们的“入门”指南,但传递我自己的独立变量,也不使用约束。我使用指南中的示例函数得到了相同的结果(我在下面的代码中注释了它们)。 代码如下: 当我打印出问题类中_evaluate_elementwise方法中的kwargs时,我确实得到了它是算法对象: {'算法': 我很难理解它是如何将algorithm对象作为_evalute的参数的,它接受

  • 我将我的项目从Django 1.11升级到2.2,做了所有的更改,但带来了新的错误,说login()得到了一个意想不到的关键字参数template_name。它与Django 1.11的前一个版本运行良好(所有其他网址都在工作,只有着陆页给出了错误)。我找不到任何关于这个问题的参考资料。以下是该问题的错误、网址和视图。 着陆\urls.py 着陆\views.py C:\Users\User\ve

  • 我试图使用以下代码从上面的数据框创建一个有序的类别- 但是它给出了错误:astype()得到了一个意外的关键字参数“categories”。

  • 我正在尝试转换大熊猫的unix时间。我从一个csv文件中读取了这个,但是当我试图转换它时,我得到了上面的错误。 完全回溯 附加信息: 熊猫的版本是:0.8。0 操作系统:Debian,使用sudo apt get install python pandas安装(根据官方网站) 样本数据

  • 我有一张大桌子,我根据它们的日期把它切成许多小桌子: 我已经对dfs['2019-06-23']特定表进行了一些修改,现在我想将其保存在我的计算机上。我尝试了两种方法: 他们都提出了这个错误: get_handle()得到了一个意外的关键字参数错误 我不知道为什么会出现这个错误,也没有找到任何原因。我用这种方式保存了很多文件,但以前从未用过。 我的目标是:在修改后将此数据帧保存为csv