django views.py调用另一个python脚本

时间:2013-06-10 01:33:35

标签: python django django-views

我是Django的新手。请帮我解决以下问题。

我有一个提供URL1和URL2的用户表单。这些URL需要传递给另一个Python脚本[redirects.py],它将进行验证以检查它们是否采用有效的URL格式并返回给用户的消息。

现在我的问题是如何编写我的views.py以便完成这项工作。我知道我们可以导入redirects.py中的views.py并进行调用。但我不知道如何在浏览器中打印消息。请帮忙。如果需要更多信息,请告诉我。

def shortcuts_process(request):
    print request.POST
    return HttpResponse("Source is %s\nDestination is %s" % (request.POST['source'],request.POST['destination']))

更新 这是我的脚本概述。我的系统中有一个python脚本[redirects.py],它接受源和目标URL。一旦被接受,它将验证它们是否为URL格式,然后进行备份,然后将它们添加到.htaccess并显示添加到文件中的行。在完成所有这些工作的同时,它会通过脚本中发生的信息向用户暗示。

现在我已经让django创建了一个Web门户,它为用户提供输入源和目标。现在我想从views.py调用脚本并在用户的Web浏览器中打印所有redirects.py脚本输出。

请帮助我解决这个问题,我花了一整天的时间来寻找这个答案。感谢。

Update 2: 请让我知道为什么我的浏览器中没有显示以下内容

来自views.py

def shortcuts_process(request):
 if 'source' in request.POST and 'destination' in request.POST and request.POST['source'] and request.POST['destination']:
            src=request.POST['source']
            desti= request.POST['destination']
            my_result=process_input(src,desti)
            return render_to_response('results.html',{'result': my_result}

来自results.html

<html>    
<head>
This is the result page to User
</head>
<body>
<ul>
{% for each_line in result %}
<p>{{ each_line }}</p>
{% endfor %}
</ul>
<p>
I'm supposed to be printed</p>
</body>
</html>

来自浏览器输出:

  

这是用户

的结果页面      

我应该打印

从Linux提示符:

  

[10 / Jun / 2013 04:41:11]“GET /重定向HTTP / 1.1”200 727 [10 / Jun / 2013   04:41:14]“GET / choice?selection = shortcuts HTTP / 1.1”200 817 URL   格式不正确URL的格式不正确   [10 / Jun / 2013 04:41:18]“POST /shortcuts.conf HTTP / 1.1”200 125

现在我的问题是,为什么消息The URL is not in the right format没有显示在浏览器上而是显示在Linux提示符中。请帮忙。感谢

2 个答案:

答案 0 :(得分:0)

无论你想在浏览器中显示什么字符串,都要在HttpResponse中返回。

您可以尝试以下方式:

#validation.py
def validate(url1, url2):
    # perform validation here
    if valid:
        return "urls are valid"
    else:
        return "urls are invalid"


#views.py
def shortcuts_process(request):
    print request.POST
    url1 = request.POST.get('url1', '')
    url2 = request.POST.get('url2'. '')
    return HttpResponse(validate(url1, url2))

希望有所帮助。
有关表单验证,请参阅django书(http://www.djangobook.com/en/2.0/chapter07.html

中的第7章

答案 1 :(得分:0)

谢谢大家......我设法得到答案。 而是将我的函数validate_url改为print,将其更改为return,这给了我想要的结果。

我是如此愚蠢地发现这一点。失败是成功的踏脚石!! :O)