TypeError:loadshortlink()为参数“shortlink”获取了多个值

2024-09-26 18:19:28 发布

您现在位置:Python中文网/ 问答频道 /正文

错误: TypeError:loadshortlink()为参数“shortlink”获取了多个值

我的网址.py地址:

path('s/<str:shortlink>',views.loadshortlink, name="get_longlink")

你知道吗视图.py地址:

def loadshortlink(shortlink):
    print("Translating short link %s" % shortlink)
    link = get_longlink(shortlink)
    return render(request, 'shortlinks/openlong.html', {
        'link': link

    })

def get_longlink(shortlink):
    print('Short link is %s' % shortlink)
    links = Links.objects.filter(shortlink=shortlink)
    if len(links)>1 or len(links)==1:
        link = links[0].longlink
        return link
    else:
        return 'No matched long links'

当我访问url时:http://127.0.0.1:8000/s/4nI

我得到一个错误:

Internal Server Error: /s/4nI
Traceback (most recent call last):
File "/home/joel/.local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
File "/home/joel/.local/lib/python3.6/site-packages/django/core/handlers/base.py", line 126, in _get_response
    response = self.process_exception_by_middleware(e, request)
File "/home/joel/.local/lib/python3.6/site-packages/django/core/handlers/base.py", line 124, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
TypeError: loadshortlink() got multiple values for argument 'shortlink'

为什么会这样?你知道吗


Tags: pyhomegetreturnresponserequestliblocal
2条回答

实际上,它无法处理请求,因为loadshortlink方法缺少请求参数。您的代码应该是:

def loadshortlink(request, shortlink):
    print("Translating short link %s" % shortlink)
    link = get_longlink(shortlink)
    return render(request, 'shortlinks/openlong.html', {
        'link': link

    })

def get_longlink(shortlink):
    print('Short link is %s' % shortlink)
    links = Links.objects.filter(shortlink=shortlink)
    if len(links)>1 or len(links)==1:
        link = links[0].longlink
        return link
    else:
        return 'No matched long links'

view函数的第一个参数应该是request。您需要将其添加到loadshortlink

def loadshortlink(request, shortlink):
    print("Translating short link %s" % shortlink)
    link = get_longlink(shortlink)
    return render(request, 'shortlinks/openlong.html', {
        'link': link

    })

相关问题 更多 >

    热门问题