Я создаю чат-бота.для этого я поддерживаю сеанс для создания потока чата.и он работает правильно при запуске сервера.Но когда я использую 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 и указываю ссылку на этот файл.это не поддержание сессий.Пожалуйста, помогите мне решить эту проблему.