Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django--使用参数重定向视图_Python_Django_Django Views_Django Urls - Fatal编程技术网

Python Django--使用参数重定向视图

Python Django--使用参数重定向视图,python,django,django-views,django-urls,Python,Django,Django Views,Django Urls,在我正在构建的Django应用程序中,我希望用户创建过程如下:当用户注册时,if valid将被重定向到创建列表对象,if valid将被重定向到刚刚创建的列表对象的仪表板。我的看法如下: def user_signup(request): if request.method == 'POST': form = forms.UserSignupForm(data=request.POST) if form.is_valid(): u

在我正在构建的Django应用程序中,我希望用户创建过程如下:当用户注册时,if valid将被重定向到创建列表对象,if valid将被重定向到刚刚创建的列表对象的仪表板。我的看法如下:

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})
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'),
这些视图的My URL.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})
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'),
以下哪些网站:

return redirect('user_dashboard')
我假设这与我没有传递列表id有关,但是,即使我尝试传递硬编码的值,它也不起作用(如下所示):

我做错了什么

试试看:

return redirect(reverse('user_dashboard', args=(2,)))
你的代码

return redirect('user_dashboard')
不起作用,因为在url模式中,您

url(r'u/dashboard/(?P<list_id>\d+)/$', views.user_dashboard, name='user_dashboard'),
url(r'u/dashboard/(?P\d+/$),views.user\u dashboard,name='user\u dashboard'),
它需要
列表id
作为参数

试试看:

return redirect(reverse('user_dashboard', args=(2,)))
你的代码

return redirect('user_dashboard')
不起作用,因为在url模式中,您

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

它需要
列表id
作为参数

我刚刚尝试过,但它返回了参数为“()”的“user_dashboard”的相反结果,并且没有找到关键字参数“{args':(2,)}”。oops:)我完全忘记了
reverse
:)您不需要使用
重定向(reverse(…)
,因为它同时接受
args
kwargs
,并将它们传递给
reverse
。所以:
redirect('user\u dashboard',list\u id=2)
应该可以工作。如果包含反向,它会重定向。现在让我们假设我不想用2硬编码,我希望它是给定用户的列表id。我是否只需要创建一个名为let say
list\u id
的局部变量,然后将该变量传递到
args=()
。您可以将2替换为本地变量list_id,我刚刚尝试过,它返回了参数为“()”且关键字参数为“{args':(2,)}”的“user_dashboard”的相反结果。oops..)我完全忘记了
reverse
:)您不需要使用
重定向(reverse(…)
,因为它同时接受
args
kwargs
,并将它们传递给
reverse
。所以:
redirect('user\u dashboard',list\u id=2)
应该可以工作。如果包含反向,它会重定向。现在让我们假设我不想用2硬编码,我希望它是给定用户的列表id。我是否只需要创建一个名为let say
list\u id
的局部变量,然后将该变量传递到
args=()
。您可以将2替换为局部变量list_id