Сеанс не поддерживается для нового запроса в django при использовании iframe - PullRequest
0 голосов
/ 04 декабря 2018

Я создаю чат-бота.для этого я поддерживаю сеанс для создания потока чата.и он работает правильно при запуске сервера.Но когда я использую iframe, чтобы дать ссылку на файл окна чата, сессия не поддерживается.для каждого нового запроса старый сеанс уничтожался.

это мой код для потока чата

def extract_data(request, input_data):
        from chat import validations
        if 'city' not in request.session:
            response_data = {'extra': {}, 'data': {}}
            response_data['extra']['statement'] = 'Select Car Model which you like to rent?'
            response_data['extra']['type'] = 'carmodel'
            response_data['data'] = Cars.city_check(request,response_data, input_data)

        elif 'veh_name' not in request.session:
            response_data = Cars.veh_name_check(request, input_data)

        elif 'days' not in request.session:
            response_data = validations.days_check(request, input_data)

        elif 'phone' not in request.session:
            response_data = validations.phone_check(request, input_data)

        elif 'email' not in request.session:
            response_data = validations.mail_check(request, input_data)

        elif 'name' not in request.session:
            response_data = validations.name_check(request, input_data, 'Car')

        return response_data




def city_check(request, response_data, input_data):
        import pdb;pdb.set_trace()
        if len(input_data.split()) == 6:
            request.session['city'] = input_data.split()[4]+' '+input_data.split()[5]
        else:request.session['city'] = input_data.split()[4]
        request.session['flag'] = 0
        city_list = dict(city=list(models.CityForCars.objects.filter(CityForCars=request.session['city']).values_list().values().order_by('id')))

        city = city_list['city'][0]['id']
        car_model_data = dict(car_model=list(models.CarModel.objects.filter(City_id=city).values_list().values().order_by('id')))

        response_data = car_model_data    
        return response_data

    @staticmethod
    def veh_name_check(request, input_data):
        response_data = {'extra': {}, 'data': {}}
        response_data['extra']['statement'] = 'For how many days are you looking to rent a vehicle? (Type or tap below)'
        response_data['data'] = ['1 Day', '2 Day', '3 Day', '4 Day', '5+ Days']
        response_data['extra']['type'] = 'duration'
        diff=' '
        request.session['veh_name'] = diff.join(input_data.split()[5:])
        return response_data

    @staticmethod
    def customer_details(request, data, client_ip):
        serializer = CustomerDetailPage(data=data)
        if serializer.is_valid():
            profile = serializer.save()
            print('data completely saved')
            print('client ipppppppppppppppppppppppppp')
            print(client_ip)
            common.send_mail(profile, client_ip)
            return JsonResponse(serializer.data, status=200)
        return HttpResponse(serializer.errors, status=400)

    @staticmethod
    def car_selected(request, input_text):
        request.session['car_selected'] = 1
        request.session['car_flag'] = 1
        print(request.session)

    @staticmethod
    def check_car_city(request, input_text):
        for input in input_text.split():
            if models.CityForCars.objects.filter(CityForCars=input.title()).values().exists():
                print(input)
                return input
            else:
                return None

    @staticmethod
    def vehicle_city(request, vehicle):
        if vehicle == 'cars':
            if request.session['count_flag'] == 1:
                request.session['end_count'] = 5
                request.session['start_count'] = 0
                request.session['count_flag'] = 0

            car_city = dict(city=list(models.CityForCars.objects.values_list().values().order_by('id')[
                                      request.session['start_count']:request.session['end_count']]))
            request.session['start_count'] = 5 + request.session['start_count']
            request.session['end_count'] = 5 + request.session['end_count']
            if len(car_city['city']) == 5:
                car_city['city'].append({'id': 10000, 'CityForCars': 'more...'})
            return car_city

    @staticmethod
    def car_models(request, city):
        car_model_data = dict(
            city=list(models.CarModel.objects.filter(City_id=city).values_list().values().order_by('id')))


def book_vehicle(request, input_data):
    serializer = BookVehicleSerializer(data=input_data)
    if serializer.is_valid():
        serializer.save()
        print('data completely saved')
        return JsonResponse(serializer.data, status=200)
    return HttpResponse(serializer.errors, status=400)


def fetch_cars_models(request):

    if request.method == 'POST':
        input_data = json.loads(request.read().decode('utf-8'))
        if models.CarModel.objects.filter(City_id=input_data['city_id']):
            car_city = dict(cars=list(models.CarModel.objects.filter(City_id=input_data['city_id']).values_list().values().order_by('id')))
            return JsonResponse(car_city, status=200)
        return HttpResponse('error', status=400)


def fetch_bikes_models(request):

    if request.method == 'POST':
        input_data = json.loads(request.read().decode('utf-8'))
        if models.BikeModel.objects.filter(City_id=input_data['city_id']):
            car_city = dict(bikes=list(models.BikeModel.objects.filter(City_id=input_data['city_id']).values_list().values().order_by('id')))
            return JsonResponse(car_city, status=200)
        return HttpResponse('error', status=400)

я создал новую папку, в которой я предоставляю интерфейс проекта.и дает базовый URL.но когда я использую iframe и указываю ссылку на этот файл.это не поддержание сессий.Пожалуйста, помогите мне решить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...