更新:我已用图片更新了我的帖子,请立即查看我想要的内容:
我的front_page:
用户hase输入了' name'。
用户按下搜索后,用户即可获取列表和图表,但您可以看到“' name'更多地保留在搜索栏中,但我希望它在那里。
现在你问我了吗?
我的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的新手,所以请帮忙
答案 0 :(得分:2)
我认为你想要使用cookies,这应该可以帮助你开始使用:https://docs.djangoproject.com/en/dev/topics/http/sessions/?from=olddocs/#using-cookie-based-sessions
然后我们有Django Cookies, how can I set them?
从根本上设置您需要的cookie:
resp = HttpResponse(response)
resp.set_cookie('word', request.POST['word'])
获取您只需要request.COOKIES['word']
的Cookie或更安全的方法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 }}" />
请在有机会的时候浏览整个文档,是的,我知道它们非常广泛,但它们非常值得......
答案 1 :(得分:1)
您可以将其设置为:
,而不是response.set_cookie(...)
request.session['word'] = request.POST['word']
django处理其他事情。有关更多信息,请参阅How to use sessions