为了账号安全,请及时绑定邮箱和手机立即绑定

Django —使用参数重定向视图

Django —使用参数重定向视图

白板的微信 2021-03-16 13:09:47
在我正在构建的Django应用程序中,我希望用户创建过程如下:在用户注册时,如果有效,则重定向到创建LIST对象,如果有效,则重定向到将要用作仪表板的仪表板。刚创建的LIST对象。我的views.py如下:def user_signup(request):    if request.method == 'POST':        form = forms.UserSignupForm(data=request.POST)        if form.is_valid():            user = form.save()            g = Group.objects.get(name='test_group')            g.user_set.add(user)            # log user in            username = form.cleaned_data['username']            password = form.cleaned_data['password1']            user = authenticate(username=username, password=password)            login(request, user)            messages.success(request, u'Welcome to Social FollowUp')            return redirect('user_create')    else:        form = forms.UserSignupForm()    return TemplateResponse(request, 'user_signup.html', {        'form': form,    })@login_required@permission_required('')def user_create(request):    if request.method == 'POST':        list_form = forms.ListForm(request.POST)        if list_form.is_valid():            list_create = list_form.save()            messages.success(request, 'List {0} created'.format(list_create.list_id))            return redirect('user_dashboard')    else:        list_form = forms.ListForm()    return TemplateResponse(request, 'dashboard/create.html', {'list_form': list_form, })def user_dashboard(request, list_id):try:    list_id = models.List.objects.get(pk=list_id)except models.List.DoesNotExist:    raise Http404return TemplateResponse(request, 'dashboard/view.html', {'list_id': list_id})我对这些视图的urls.py如下:url(r'user/signup/$', views.user_signup, name='user_signup'),url(r'u/dashboard/(?P<list_id>\d+)/$', views.user_dashboard, name='user_dashboard'),url(r'u/list/create/$', views.user_create, name='user_create'),当我尝试执行该过程时,前两个视图可以正常工作。但是,当我重定向到user_dashboard时,出现以下错误:Reverse for 'user_dashboard' with arguments '' and keyword arguments '{}' not found.
查看完整描述

2 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

尝试:

return redirect(reverse('user_dashboard', args=(2,)))

您的验证码

return redirect('user_dashboard')

将无法正常工作,因为在您的网址格式中,您有

url(r'u/dashboard/(?P<list_id>\d+)/$', views.user_dashboard, name='user_dashboard'),

需要 list_id作为参数。


查看完整回答
反对 回复 2021-03-29
?
炎炎设计

TA贡献1808条经验 获得超4个赞

你不应该需要使用redirect(reverse(...)),因为redirect()同时接受argskwargs并将它们传递给reverse。所以:redirect('user_dashboard', list_id=2)应该工作。

查看完整回答
反对 回复 2021-03-29
  • 2 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号