2016-11-18 4 views
0

Я должен установить кук, чтобы сохранить телеги детали в моем проекте, но он не работает, когда я проверить печенье с помощью функциипеченья не работает в Джанго

request.session.set_test_cookie() 

Затем установить кук, но функция response.set_cookie не устанавливает печенье. Я пробовал этот код.

def index(request): 
    if request.method == 'GET': 
     response = HttpResponse('hello') 
     days_expire = 7 
     max_age = days_expire * 24 * 60 * 60 
     response.set_cookie('my_cookie', 'Product Cart', max_age=max_age) 
     return render(request, 'home/index.py') 

и для получения cookis, этот код используется

def sport(request): 
    if request.method == 'GET': 
     if 'my_cookie' in request.COOKIES: 
      value = request.COOKIES['my_cookie'] 
      return HttpResponse(value) 
     else: 
      return HttpResponse('Cookie not set') 

Он всегда печатает печенье задавать не строку, что может быть причиной этого.

+0

http://stackoverflow.com/questions/5113660/how-to-set-or-get-a-cookie-value-in-django – weltensturm

+0

Я уже проверил этот вопрос, как он может решить мою проблему – Pankaj

+0

Вы не ответите. – weltensturm

ответ

1

Вы создаете два разных экземпляра HttpResponse: один вручную, а другой создается вызовом render() и возвращается из представления. Вы должны сохранить результат на части render() вызова и установить печенье там:

response = render(request, 'home/index.py') 
response.set_cookie('my_cookie', 'Product Cart', max_age=max_age) 
return response 

Вы должны также рассмотреть следующие вопросы:

  • Использования extenstion отличающегося от .py для ваших шаблонов. Они могут запутаться с файлами кода Python.
  • Использование sessions для вашей карты доставки.
+0

Спасибо большое, он решил мою проблему, спасибо большое :) – Pankaj

+0

Еще одна вещь, как я могу использовать «словарь» вместо переменной my_cookie, например my_cookie.item_count и my_cookie.price – Pankaj

+0

Cookies - это только текст, они не может хранить словари напрямую, но сеанс может это сделать. Если вам нужна дополнительная информация, откройте новый вопрос с новой темой. –

Смежные вопросы