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

Django custom URL missing 1 required positional argument

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

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'

感谢您的帮助

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

因此路径应该如下所示:

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

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

from .forms import Form_Step_1

def register(request):
    print(request<b>.GET['step']</b>)
    # …

您在 django 中使用 URL 路由的错误做法。
这更清洁和工作:
path('register/step/<int:step>/', register, name='register')