ошибки реализации в файлах cookie

ОБНОВЛЕНИЕ: Я обновил свой пост изображениями, посмотрите, что я именно хочу:

Моя главная_страница:

введите описание изображения здесь

пользователь hase ввел слово «имя».

введите описание изображения здесь

после того, как пользователь нажимает кнопку поиска, пользователь получает список и диаграммы, но вы можете видеть, что слово «имя» больше сохраняется в строке поиска, но я хочу, чтобы оно было там.

Вы получили мой вопрос?

Мой код файла views.py:

#!/usr/bin/python 

from django.core.context_processors import csrf
from django.template import loader, RequestContext, Context
from django.http import HttpResponse
from search.models import Keywords
from django.shortcuts import render_to_response as rr
import Cookie

def front_page(request):

    if request.method == 'POST' :
        from skey import find_root_tags, count, sorting_list
        str1 = request.POST['word'] 
        str1 = str1.encode('utf-8')
        list = []
        for i in range(count.__len__()):
            count[i] = 0
        path = '/home/pooja/Desktop/'
        fo = open("/home/pooja/Desktop/xml.txt","r")

        for i in range(count.__len__()):

            file = fo.readline()
            file = file.rstrip('\n')
            find_root_tags(path+file,str1,i)    
            list.append((file,count[i]))

        for name, count1 in list:
            s = Keywords(file_name=name,frequency_count=count1)
            s.save()
        fo.close()

        list1 = Keywords.objects.all().order_by('-frequency_count')
        t = loader.get_template('search/front_page.html')
        c = RequestContext(request, {'list1':list1,
        })
        c.update(csrf(request))
        response = t.render(c)
        response.set_cookie('word',request.POST['word'])
        return HttpResponse(response)

    else :  
        str1 = ''
        template = loader.get_template('search/front_page.html')
        c = RequestContext(request)
        response = template.render(c)
        return HttpResponse(response)

Я создал приложение, использующее поиск django, которое выполняет поиск по ключевым словам в 10 xml-документах и ​​возвращает частоту появления ключевых слов для каждого файла, который отображается в виде гиперссылочного списка xml-документов с их соответствующими счетчиками и диаграммами.

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

'SafeUnicode' object has no attribute 'set_cookie'

Зачем? Я новичок в django, поэтому, пожалуйста, помогите


person POOJA GUPTA    schedule 11.07.2012    source источник
comment
вы не использовали render_to_response ??? см. документацию здесь, просто передайте request.POST['word'] в словаре и откройте его в своем шаблоне с помощью {{ }}   -  person Priyank Patel    schedule 11.07.2012


Ответы (2)


Насколько я понимаю, вы хотите использовать файлы cookie, это должно помочь вам начать работу: https://docs.djangoproject.com/en/dev/topics/http/sessions/?from=olddocs/#using-cookie-based-sessions

тогда у нас есть эти файлы cookie Django, как я могу их установить?

в основном, чтобы установить файл cookie, вам необходимо:

 resp = HttpResponse(response)
 resp.set_cookie('word', request.POST['word'])

чтобы получить файл cookie, вам нужно всего лишь request.COOKIES['word'] или более безопасным методом будет request.COOKIES.get('word', None)

from django.shortcuts import render_to_response
...

c = {}
c.update(csrf(request))
c.update({'list1':list1, 'word':request.POST['word']})
return render_to_response('search/front_page.html', 
               c,
               context_instance=RequestContext(request))

в вашем шаблоне вам следует обновить поле панели поиска:

<input type="text" name="word" value="{{ word }}" />

пожалуйста, просмотрите всю документацию, когда у вас будет возможность, да, я знаю их довольно обширно, но они того стоят ...

person Samy Vilar    schedule 11.07.2012
comment
эй, это не работает, пожалуйста, внимательно посмотрите мой код, когда пользователь вводит слово и нажимает поиск, он направляется на front_page.html и т. е. на ту же страницу, где пользователю была показана панель поиска, чуть ниже, результаты отображаются - person POOJA GUPTA; 11.07.2012
comment
@POOJAGUPTA можете быть более конкретными, у вас появляется ошибка? обновите свой вопрос, указав текущий код и исключения, если таковые имеются. - person Samy Vilar; 11.07.2012
comment
это полностью отличается от вашей исходной проблемы и не имеет ничего общего с файлами cookie, которые являются не чем иным, как способом запоминания состояний для каждого клиента, ничего общего с HTML как таковым, вам нужно схватить слово, передать его в свой шаблон и установите его как значение по умолчанию для ввода текста. - person Samy Vilar; 11.07.2012
comment
Я не знаю, мне посоветовали использовать файлы cookie, чтобы сохранить слово моего наставника, когда он увидел это приложение, но вы говорите передать слово в мой шаблон, что может быть выполнено через контекст, и контекст не требует единственный аргумент? - person POOJA GUPTA; 11.07.2012
comment
Файлы cookie и сеансы @POOJAGUPTA в целом - это способы хранения значений в нескольких запросах, если вам нужно, вы можете их использовать, в любом случае я обновил ответ на то, чего вы, возможно, пытаетесь достичь. - person Samy Vilar; 11.07.2012
comment
позвольте нам продолжить обсуждение в чате - person POOJA GUPTA; 11.07.2012

Вместо response.set_cookie(...) вы можете установить его как:

request.session['word'] = request.POST['word']

django обрабатывает другие вещи. Для получения дополнительной информации см. Как использовать сеансы

person Rohan    schedule 11.07.2012
comment
Не работает ............ слово должно быть сохранено ....... но ничего подобного не происходит - person POOJA GUPTA; 11.07.2012