首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError: loadshortlink()为参数'shortlink‘获取了多个值

TypeError: loadshortlink()为参数'shortlink‘获取了多个值
EN

Stack Overflow用户
提问于 2018-09-04 02:41:37
回答 2查看 117关注 0票数 0

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

我的urls.py:

代码语言:javascript
复制
path('s/<str:shortlink>',views.loadshortlink, name="get_longlink")

views.py:

代码语言:javascript
复制
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

我得到了错误:

代码语言:javascript
复制
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'

为什么会发生这种情况?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-04 02:45:23

视图函数的第一个参数应为请求。您需要将其添加到loadshortlink

代码语言:javascript
复制
def loadshortlink(request, shortlink):
    print("Translating short link %s" % shortlink)
    link = get_longlink(shortlink)
    return render(request, 'shortlinks/openlong.html', {
        'link': link

    })
票数 1
EN

Stack Overflow用户

发布于 2018-09-04 02:52:03

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

代码语言:javascript
复制
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'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52154852

复制
相关文章

相似问题

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