猿问

Django —使用参数重定向视图

在我正在构建的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 Http404

return 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.



白板的微信
浏览 190回答 2
2回答

蝴蝶刀刀

尝试:return&nbsp;redirect(reverse('user_dashboard',&nbsp;args=(2,)))您的验证码return&nbsp;redirect('user_dashboard')将无法正常工作,因为在您的网址格式中,您有url(r'u/dashboard/(?P<list_id>\d+)/$',&nbsp;views.user_dashboard,&nbsp;name='user_dashboard'),这需要&nbsp;list_id作为参数。

炎炎设计

你不应该需要使用redirect(reverse(...)),因为redirect()同时接受args和kwargs并将它们传递给reverse。所以:redirect('user_dashboard', list_id=2)应该工作。
随时随地看视频慕课网APP

相关分类

Python
我要回答