我有以下视图(测试空):
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'),
]
register
和register/
运作良好。但是,如果我转到register?step=1
,则会出现以下错误:
register() missing 1 required positional argument: 'step'
感谢您的帮助
[您在django中使用URL路由的不良做法。这更干净,更有效:path('register/step/<int:step>/', register, name='register')
?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'])
# …