我的views.py代码:
from django.template import Context, loader, RequestContext
from django.http import HttpResponse
from skey import find_root_tags, count, sorting_list
from search.models import Keywords
def front_page(request):
if request.method == 'get' :
str1 = request.getvalue['word']
fo = open("xml.txt","r")
for i in range(count.__len__()):
file = fo.readline()
file = file.rstrip('\n')
find_root_tags(file,str1,i)
list.append((file,count[i]))
sorting_list(list)
for name, count in list:
s = Keywords(file_name=name,frequency_count=count)
s.save()
fo.close()
return HttpResponseRedirect('/results/')
else :
str1 = ''
list = []
template = loader.get_template('search/front_page.html')
c = RequestContext(request)
response = template.render(c)
return HttpResponse(response)
def results(request):
list1 = Keywords.objects.all()
t = loader.get_template('search/results.html')
c = Context({'list1':list1,
})
return HttpResponse(t.render(c))
@this for everyone。
流程是这样的:
1)我在服务器上运行我的应用程序。
2)它显示了由于视图“def front_page(request)”的else部分而导致的搜索页面,现在我想执行视图“def front_page(request)”的if部分,因为我想执行我写的python代码被重定向到视图“def results(request)”,我该怎么做?
3)我应该在front_page.html和urls.py的“action”中提到什么,这样我才能再次回到同一个视图。因为我无法回到我想要的相同视图,重复地向我显示相同的搜索页面。请帮助。
答案 0 :(得分:1)
要放大@Barnaby发布的答案....使用action ='#',您的表单将发布到与表单的get请求中使用的url相同的url。 然后在你的视图代码中,你有逻辑说 - 如果这个url的请求是一个GET请求然后做配置表单的工作,否则,你认为它是一个POST然后你可以处理响应。
此外,我建议您的视图明确检查请求是否为POST,如果不是假设它是GET,而不是相反(如您所知),这更安全,因为GET和POST不是唯一的请求类型,如果你想处理在POST请求中提交的变量,你肯定需要知道你正在处理POST请求。
希望有所帮助
答案 1 :(得分:0)