使用Django运行pythod代码并在Web上生成输出

时间:2017-10-26 14:45:51

标签: python django python-2.7

我知道这对许多人来说可能是一个重复的问题,但我还没有找到适当的答案。我是Django和Python的初学者。我有一个python代码,目前在cli上运行并生成输出,但我希望相同的程序在web上运行它的输出。

我读到web django是最合适的框架,为此我开始学习django。我在每个教程中都看到人们讨论了应用程序,查看了URL等,但没有看到将python代码与django集成的示例。

我想要了解如何将我的python脚本与Django集成,以及我将代码放在Django项目或应用程序中的哪个位置。我应该在视图中导入它吗?如果是,那么如何将我的输出呈现给网络。

以下是我正在运行的示例代码,它基本上打开两个文件并运行一些正则表达式来提取所需的信息。

import re


def vipPoolFileOpen():          # function opens vip and pool config file and store them to vip_config and pool_config variables
    with open("pool_config.txt",'rb') as pool_config:
        pool_config = pool_config.read()
        pool_config = pool_config.split('ltm')
    with open("vip_config.txt",'rb') as vip_config:
        vip_config = vip_config.read()
        vip_config = vip_config.split('ltm')
    return vip_config,pool_config



def findWidth(vip_config):  # function to find the maximum length of vip in entire file, this will be used to adjust column space
    colWidth=0
    for item in vip_config:
        i=0
        if colWidth<len(item):
            while i<len(vip_config)-1:
                if len(item)>=len(vip_config[i+1]):
                    colWidth=len(item)
                    i=i+1
                else:
                    i+=1
                    continue
    return colWidth

def regexFunction():
    vip_config, pool_config = vipPoolFileOpen()
    findWidth(vip_config)
    for vip in vip_config:
        regVip = re.compile(r'pool (.+)\r')
        poolByVip = regVip.findall(vip)     # poolByVip holds pool name from the vip_config file
        for poolblock in pool_config:
            regPool = re.compile(r'pool (.+) {')
            poolByConfig = regPool.findall(poolblock)
            if poolByVip == poolByConfig:
                print vip + poolblock
                break
            elif poolByVip == ['none']:
                print vip
                break
            else:
                continue

1 个答案:

答案 0 :(得分:1)

是的,您应该通过视图将您的输出呈现给网络。你需要在views.py中编写一个视图函数(或一个类视图),并在urls.py

中提供一个你想要的URL。

如果您重写函数以返回所需的结果而不是打印它,tou可以执行以下操作:

在views.py

中写下这个
from django.http import HttpResponse
from wherever_you_have_it import regexFunction

def bar(request):
    result = regexFunction()  # result should be a string
    return HttpResponse(result)

并在urls.py中:

from .views import bar

urlpatterns = [
    url(r'^foo$', bar),
]

当然,您首先要创建Django应用程序。

您的结果应该在地址localhost:8000 / foo上显示为纯文本 - 但您需要:

python menage.py runserver

首先在您的终端

当然可以随意看看: https://github.com/Ergaro/CheckMyChords 看看简单的django应用程序是怎样的