0

我的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 适合所有人。

流程是这样的:

1)我在服务器上运行我的应用程序。

2)由于视图“def front_page(request)”的else部分,它向我显示了搜索页面,现在我想执行视图“def front_page(request)”的if部分,因为我想执行我的python代码写在那里并重定向到视图“def results(request)”,我该怎么做?

3) 我应该在 front_page.html 和 urls.py 的“操作”中提到什么,以便我可以再次回到相同的视图。因为我无法回到我想要的相同视图,它重复地向我显示相同的搜索页面。请帮助。

4

2 回答 2

1

要扩大@Barnaby 发布的答案......通过使用 action='#' 您的表单将发布到与表单获取请求中使用的 url 相同的 url。然后在您的视图代码中,您有逻辑说明 - 如果对此 url 的请求是 GET 请求,则执行配置表单的工作,否则,您假设它是 POST,然后您可以处理响应。

另外,我建议您的视图明确检查请求是否为 POST,如果不假设它是 GET,而不是相反(如您所愿),这更安全,因为 GET 和 POST 是不是唯一的请求类型,如果您想处理 POST 请求中提交的变量,您肯定需要知道您正在处理 POST 请求。

希望有帮助

于 2012-07-04T11:52:22.260 回答
0

简短的回答:action="#"。这是一个返回到当前 URL 的 HTML 技巧。

如何在模板中引用视图的一般答案是使用url标记。您可能还想考虑使用 Django 的表单功能。

于 2012-07-04T11:44:10.117 回答