Django自定义URL缺少1个必需的位置参数

问题描述 投票:1回答:2

我有以下视图(测试空):

from .forms import Form_Step_1

def register(request, step):
    print(step)

在我的urls.py中,我有:

urlpatterns = [
    path('login/', views.LoginView.as_view(), name='login'),
    path('logout/', views.LogoutView.as_view(), name='logout'),

    path('register', register, name='register'),
    path('register/', register, name='register'),
    path('register?step=<int:step>/', register, name='register'),
]

registerregister/运作良好。但是,如果我转到register?step=1,则会出现以下错误:

register() missing 1 required positional argument: 'step'

感谢您的帮助

django django-urls
2个回答
1
投票

[您在django中使用URL路由的不良做法。这更干净,更有效:path('register/step/<int:step>/', register, name='register')


1
投票

?step=1部分是路径的not部分,这是query string [wiki]。在request.GET中将其编码为QueryDict,类似于字典的对象。

因此路径应如下所示:

    path('register/', register, name='register'),

并且在视图中,您可以通过以下方式获取数据:

from .forms import Form_Step_1

def register(request):
    print(request.GET['step'])
    # …
© www.soinside.com 2019 - 2024. All rights reserved.