尝试从浏览器访问时,URL错误缺少1个必需的位置参数:“ offset”

时间:2018-10-01 17:50:34

标签: django django-views

我正在尝试遵循以下教程: https://djangobook.com/django-views-dynamic-content/

URL页面如下所示

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^hello/$', hello),
    url(r'^time/$', current_datetime),
    url(r'^time/plus/(\d{1,2})/$', hours_ahead),
]

关联视图如下:

def hours_ahead(request, offset):
    try:
        offset = int(offset)
    except ValueError:
        raise Http404()
    dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
    html = "<html><body>In %s hour(s), it will be  %s.</body></html>" % (offset, dt)
    return HttpResponse(html)

但是,当我尝试访问如下所示的任何URL时,都会出现错误。 http://127.0.0.1:8000/time/plus/5/

enter image description here

我看到以下错误。我没有将浏览器URL的偏移量传递给视图。 在控制台中,它显示以下错误:

   response = wrapped_callback(request, *callback_args, **callback_kwargs)
TypeError: hours_ahead() missing 1 required positional argument: 'offset'
[01/Oct/2018 13:29:12] "GET /time/plus/3/ HTTP/1.1" 500 62628

2 个答案:

答案 0 :(得分:0)

您需要修改urls.py。

$ curl -fsSL "https://api.launchpad.net/1.0/ubuntu/+archive/primary?ws.op=getPublishedSources&source_name=rlwrap&exact_match=true&distro_series=https://api.launchpad.net/1.0/ubuntu/xenial" \
  | jq --raw-output ".entries | .[0] | .source_package_version"

→ 0.41-1build1

答案 1 :(得分:0)

在进行了更多的阅读并且获得了上面的知识之后,我发现该路径更易读且易于执行。路径也是python 2.0中包含的更多python方式 https://docs.djangoproject.com/en/2.0/releases/2.0/#whats-new-2-0

第一个问题的答案比较容易

path('time/plus/<int:offset1>/', hours_ahead),

第二个答案是:

path('welcome/<name>/', welcome_name),