Передача анонимных пользователей из одного представления в другое в Django 3.0.5 - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь создать полностью анонимный опрос, в котором участник опроса входит на целевой сайт (индекс. html), щелкает ссылку и направляется в представление опроса. На этой странице опроса (pre_test. html) я хочу назначить новый объект «Участник» с первичным ключом и связать его с моделью опроса через внешний ключ. Поскольку этот опрос не является основной частью моего исследования, я хочу отправить этот объект участника в новое представление, где первичный ключ участника снова используется в качестве внешнего ключа для связи с другой моделью (назовем это задачей).

То, что я пробовал до сих пор в views.py:

def pre_test(request):        
    if request.method == "POST":
        participant = Participants()
        participant.save()  
        participant_pk = participant.pk
        form = PreTestQuestionnaireForm(request.POST)
        if form.is_valid():  
            post = form.save(commit=False)
            post.save()
            post_primary = PreTestQuestionnaire(pk=post.pk)  
            post_primary.Analyst_id = Participants(pk=participant_pk)
            post_primary.save()  
            request.session['user'] = participant_pk
            return HttpResponseRedirect(reverse('main:picture_test'))  
    else:
        form = PreTestQuestionnaireForm()
    return render(request, 'study/pre_test.html', {'form': form})

def picture_test(request):
    obj = Participants(Unique_ID=request.session.get('user')) # Unique_ID is the pk I've set for Participants

, но при вызове print(obj) все, что я получаю, это объект «Участники» (None). Что мне не хватает при использовании сеанса? Должен ли я вообще не использовать сеансы таким образом или мне следует создавать реальных пользователей в другой таблице, не сообщая им пароли и другие данные? Сохранение анонимности пользователей очень важно, и я хочу по возможности избегать файлов cookie, хотя я могу написать код для удаления файлов cookie после каждого сеанса.

1 Ответ

0 голосов
/ 06 мая 2020
• 1000 .
...