任何人都可以解释我如何将arg或kwargs从重定向传递到另一个视图?

时间:2011-07-05 10:39:26

标签: python django django-views django-urls

我正试图让我正在开发的网站的经理向会员发送邮件并发送确认页面。

发送邮件正在运行并发送邮件确定,但在确认中我希望他获取他发送邮件的人员列表。

所以,我需要将一个函数(view)中的users_list发送到directs中的另一个函数,然后在另一个视图中将其发送到render_to_response。

我已经阅读了很多内容并尝试了反向和我在网上阅读的许多其他内容,但似乎无法使其正常工作......

代码:

def send_members_mail(request):
    #a list of all active users in the system to show for send mail
    users_list = User.objects.filter(is_active = True)
    if request.method == 'POST':
        form = UsersForm(request.POST)
        if form.is_valid():
            user_list = []
            cd = form.cleaned_data
            #getting a list of user s that where chosen for send mail, -1 for all users
            for user_id in request.POST.getlist('chk_users'):
                user_list.append(user_id)
            #sending the mail to all list
            if '-1' in user_list:
                 users_list = User.objects.filter(pk__in=users_list).values_list('email', flat=True)
            #sending mail to specific members
            else:
                 users_list = User.objects.filter(pk__in=user_list).values_list('email', flat=True)

            cd = form.cleaned_data

            try:
                send_mail(
                    cd['subject'],
                    cd['message'],
                    'support@test.com',
                    users_list,
                )
            except BadHeaderError:
                return HttpResponse('The Mail header was corrupted, It might be because a server error or might be that you have a virus on your computer!!! please try sending again')
            return redirect('/contacts/sent/', users_list=users_list)

    else:
        form = UsersForm()
    return render_to_response('contacts/send_members_mail.html', {'form':form, 'users_list':users_list}, context_instance=RequestContext(request))

def sent(request, users_list,  *args, **kwargs):
    assert False, users_list
    return render_to_response('contacts/sent.html', context_instance=RequestContext(request))

第一个视图用于获取用户列表,并将其发送到表单,然后从表单中获取数据,包括选中的复选框,然后获取用户的用户邮件地址(用户通过邮件登录) ,所以必须有一个工作的邮件),然后发送邮件给用户,并重定向到发送页面(确认页面),管理员应该获得用户列表(这是我在哪里,这是和这样做在URLSCONF文件中)

谢谢,

埃雷兹

1 个答案:

答案 0 :(得分:2)

而不是尝试在反向/重定向中传递它,您可以将users_list设置为session变量。 e.g。

# before redirect
request.session['users_list'] = users_list

# in sent view
users_list = request.session.get('users_list', None)