Кто-нибудь может объяснить, как я могу передать arg или kwargs из перенаправления в другое представление? - PullRequest
1 голос
/ 05 июля 2011

Я пытаюсь разрешить администратору сайта, который я разрабатываю, отправить письмо участникам и отправить сообщение, чтобы получить страницу подтверждения.

Отправка почты работает и отправка почты в порядке, но в подтверждениия хочу, чтобы он получил список людей, которым он отправил письмо.

Итак, мне нужно отправить список users_list из одной функции (view) в другую в директивах и прочитать его в другом представлении, отправивэто к 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 Ответ

2 голосов
/ 05 июля 2011

Вместо того, чтобы пытаться передать его в обратном направлении / перенаправлении, вы можете установить users_list как переменную session .например,

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

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