Django-Python::如何在呈现/重定向时将变量传递到另一个页面

Django-Python::如何在呈现/重定向时将变量传递到另一个页面,python,django,variables,redirect,response,Python,Django,Variables,Redirect,Response,我有一个登录页面a,在其中我获取用户/Pwd信息,并发布到另一个第三方网站,获得JSON格式的sessionid变量。当我重定向/呈现摄取页面B时,我需要在那里显示/提供此sessionid变量 这是我尝试过的,但我似乎无法让它发挥作用。有人能帮忙吗 url.py from django.urls import path from loginp.views import LoginView from loginp.views import IngestionView urlpatterns =

我有一个登录页面a,在其中我获取用户/Pwd信息,并发布到另一个第三方网站,获得JSON格式的sessionid变量。当我重定向/呈现摄取页面B时,我需要在那里显示/提供此sessionid变量

这是我尝试过的,但我似乎无法让它发挥作用。有人能帮忙吗

url.py

from django.urls import path
from loginp.views import LoginView
from loginp.views import IngestionView

urlpatterns = [
    path('login/', LoginView.as_view(),name='LoginView'),
    path('ingestion/', IngestionView.as_view(template_name='registration/ingestion.html'),name='IngestionView'),]
views.py

from django.views.generic import TemplateView
from django import forms
from django.shortcuts import render, redirect
from django.http import HttpResponse, HttpResponseRedirect
from .forms import LoginForm
from .forms import IngestionForm
import json
import requests

class LoginView(TemplateView):
template_name = 'registration/login.html'

def get(self, request):
    form = LoginForm()
    return render(request, self.template_name, {'form':form})

def post(self, request):
    form = LoginForm(request.POST)
    if form.is_valid():
        #print form.cleaned_data()
        text = form.cleaned_data['email']
        pwd = form.cleaned_data['password']

    data = {
     "@type": "login",
     "username": text,
     "password": pwd
    }


    data_json = json.dumps(data)
    headers = {'Content-type': 'application/json'}
    url='https://cloud.com/ma/api/v2/user/login'
    response = requests.post(url, data=data_json, headers=headers)
    sessionid=response.json()['icSessionId']

    form1 = IngestionForm()
    #return render(request,'registration/ingestion.html',{'sessionid':sessionid}) #{'info':args})
    #return HttpResponseRedirect(reverse('IngestionView', kwargs={'sessionid':sessionid}))
    return redirect(request,'registration/ingestion.html',sessionid=sessionid) 


class IngestionView(TemplateView):
template_name = 'registration/ingestion.html'


def post(self, request):
    form1 = IngestionForm(request.POST)

    args1 = {"form": form1}
    return render(request, self.template_name, args1)
login.html

<html>
<head>
<title>Login Page</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
</head>
<div class="container">
        <div class="login-form col-md-4 offset-md-4">
            <h4 class="title">Please Login</h4>
            <br>
            <form action="{% url 'IngestionView' %}" method="POST">
            <div class="form-group" >
              {% csrf_token %}  
              {{form.as_p}}     
              <br>
              <button class="btn btn-primary btn-block" type="submit" value='submit'>login</button>
             </div>
            </form>
        </div>
</div>
</body>
</html>
摄取.html

<html>
<head>
<title>Ingestion Details</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
</head>
<div class="container">
            <h4 class="title">Ingestion Details</h4>
            <br>
            <form method="POST">    
            <div class="form-group" >
              {% csrf_token %}  
              {{ form.as_p }}       
              <br>
              <button class="btn btn-primary btn-block" type="submit" value='submit'>Do something</button>

             </div>
            </form>
        </div>
</div>
<h2>Session Id {{ sessionid }}</h2>
</body>
</html>
<h2>Session Id {{ request.session.get('sessionid') }}</h2>
sessionid{{request.Session.get('sessionid')}

您可以将此值保存到Django的。乍一看:

sessionid=response.json()['icSessionId']
request.session['sessionid'] = sessionid
第二种观点:

class IngestionView(TemplateView):
    template_name = 'registration/ingestion.html'


    def post(self, request):
        form1 = IngestionForm(request.POST)
        sessionid=request.session['sessionid']
        args1 = {"form": form1, 'sessionid': sessionid}
        return render(request, self.template_name, args1)

您可以将此值保存到Django的。乍一看:

sessionid=response.json()['icSessionId']
request.session['sessionid'] = sessionid
第二种观点:

class IngestionView(TemplateView):
    template_name = 'registration/ingestion.html'


    def post(self, request):
        form1 = IngestionForm(request.POST)
        sessionid=request.session['sessionid']
        args1 = {"form": form1, 'sessionid': sessionid}
        return render(request, self.template_name, args1)

谢谢@neverwanner。我现在就试试这个。我有一个疑问。如果两个不同的用户登录,维护会话变量会导致问题吗?我怎样才能分别跟踪2个用户?@sammydude Django会帮你的。每个用户都有不同的会话数据。谢谢@neverwanner!很抱歉出现了noob问题:),所以我尝试在视图中包含上述代码。视图1-在重定向之前,我分配了会话变量。如何访问它?我试图在第二页HTML中直接访问变量,但没有得到值。@sammydude您能为问题添加代码吗?评论中无法阅读。对不起。在主要部分的底部实现并添加了新代码。我们也可以在第二个视图的POST部分以同样的方式访问会话变量吗?谢谢@NeverWinner。我现在就试试这个。我有一个疑问。如果两个不同的用户登录,维护会话变量会导致问题吗?我怎样才能分别跟踪2个用户?@sammydude Django会帮你的。每个用户都有不同的会话数据。谢谢@neverwanner!很抱歉出现了noob问题:),所以我尝试在视图中包含上述代码。视图1-在重定向之前,我分配了会话变量。如何访问它?我试图在第二页HTML中直接访问变量,但没有得到值。@sammydude您能为问题添加代码吗?评论中无法阅读。对不起。在主要部分的底部实现并添加了新代码。在第二个视图的POST部分,我们也可以用同样的方式访问会话变量吗?