0

更新:我已经用图片更新了我的帖子,请现在看看我到底想要什么:

我的首页:

在此处输入图像描述

用户已输入单词“名称”。

在此处输入图像描述

用户按下搜索后,用户正在获取列表和图表,但您可以看到“名称”这个词更多地保留在搜索栏中,但我希望它在那里。

现在你明白我的问题了吗?

我的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 的新手,所以请帮忙

4

2 回答 2

2

我认为您想使用 cookie,这应该可以帮助您入门:https ://docs.djangoproject.com/en/dev/topics/http/sessions/?from=olddocs/#using-cookie-based-sessions

那么我们有这个Django Cookies,我该如何设置它们?

基本上要设置你需要的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 }}" />

有机会时请仔细阅读整个文档,是的,我知道它们相当广泛,但它们非常值得...

于 2012-07-11T06:02:31.790 回答
1

而不是response.set_cookie(...),您可以将其设置为:

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

django 处理其他事情。有关更多信息,请参阅如何使用会话

于 2012-07-11T05:37:30.887 回答