django cms中views.py文件的某些部分的实现困难

时间:2012-07-04 11:34:04

标签: python linux django-views ubuntu-10.04

我的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”中提到什么,这样我才能再次回到同一个视图。因为我无法回到我想要的相同视图,重复地向我显示相同的搜索页面。请帮助。

2 个答案:

答案 0 :(得分:1)

要放大@Barnaby发布的答案....使用action ='#',您的表单将发布到与表单的get请求中使用的url相同的url。 然后在你的视图代码中,你有逻辑说 - 如果这个url的请求是一个GET请求然后做配置表单的工作,否则,你认为它是一个POST然后你可以处理响应。

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

希望有所帮助

答案 1 :(得分:0)

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

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