`
phyeas
  • 浏览: 164197 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

在Python3.0中处理web请求6-简单的模板引擎

阅读更多

今天放假在家,外面又在下雨,闲来无事,写了个简单的模板引擎,其实也不算什么模板,只是把嵌在html里的python代码解释成嵌入在python里的html代码,仅此而已,代码也很简陋,纯粹个人娱乐

以下是示例代码:

from web.render import SimpleHTMLRender
from socketserver import ThreadingMixIn
from wsgiref.simple_server import WSGIServer

render = SimpleHTMLRender("F:/test/")
class ThreadingWSGIServer(ThreadingMixIn,WSGIServer):
    pass

def application(env,start_response):
    start_response("200 OK",[("Content-Type","text/html;charset=UTF-8")])
    return render.hello(name="phyeas")

if __name__=="__main__":
    from wsgiref.simple_server import make_server
    httpd=make_server('',8080,application,server_class=ThreadingWSGIServer)
    print("Http Service on port 8080....")
    httpd.handle_request()

 需要在F:/test目录下放置一个叫hello.html的文件。文件内容是:

<%def render(name):%>
Hello <%=name%>!

 当然了,路径和文件名可以自定

输出结果就是 Hello phyeas!(当然可以改成你的名字啦)

运行后将生成一个hello.py文件和hello.pyc文件,前面是由SimpleHTMLRender生成的,后面是导入到程序里python自动编译的结果

核心代码:

def render(self, fpath, *args, **kwargs):
        if os.path.exists(fpath[0:-5]+".py") or os.path.exists(fpath[0:-5]+".pyc"):
            if os.path.dirname(fpath) not in sys.path:
                sys.path.append(os.path.dirname(fpath))
            py_f_path=fpath[0:-5]+".py" if os.path.exists(fpath[0:-5]+".py") else fpath[0:-5]+".pyc"
            create_new_file=False
            if os.stat(fpath).st_mtime>os.stat(py_f_path).st_ctime:#如果html文件的修改时间大于python文件的创建时间,就重新创建
                with open(fpath,encoding="UTF-8") as f:
                    parseHTML2Py(f)
                create_new_file=True
            fname=os.path.split(fpath)[1][:-5]#获取文件名 
            import_statement="import "+fname
            if import_statement not in imports or create_new_file:#创建新文件时重新import
                exec(import_statement)#导入模块
            if fname+"_real_func" not in self.render_functions or create_new_file:#创建新文件时重新绑定函数
                self.render_functions[fname+"_real_func"]=eval(fname+".render")#获取出函数绑定
            return getattr(self,fname+"_real_func")(*args,**kwargs)
        else:
            with open(fpath,encoding="UTF-8") as f:
                parseHTML2Py(f)
            return self.render(fpath,*args,**kwargs)

 

分享到:
评论
2 楼 phyeas 2009-04-12  
.
1 楼 LinuxForShare 2009-04-10  
经过几天的努力,今天终于跑通了python的一个程序,不易啊
下载软件费了老半天,安装也在不停的安装卸载多次
不过现在用eclipse开发还是有问题,还会报找不到django模块,在命令行里运行却没有问题,所以怀疑是python没安装好吧,我装的是python2.6的
网上找了几天也没解决,暂时先不管了,先学习学习文档再说

相关推荐

    Python库 | fondat_core-3.0b37-py3-none-any.whl

    首先,fondat_core是Python生态中的一个重要组成部分,它的版本号3.0b37表明这是一个beta版本,意味着它可能包含一些实验性功能,并且开发者仍在进行持续优化。"py3-none-any"这部分表示该库适用于任何架构的Python ...

    Python库 | tencentcloud-sdk-python-3.0.368.tar.gz

    `Tencentcloud-sdk-python`是腾讯云为Python开发者提供的SDK,它允许用户在Python环境中无缝地访问腾讯云的各类服务,如计算、存储、数据库、人工智能等。通过这个库,开发者可以轻松地构建和管理云应用,实现对腾讯...

    Python库 | tencentcloud-sdk-python-api-3.0.440.tar.gz

    在IT行业中,Python作为一门强大且易用的编程语言,广泛应用于各种场景,包括但不限于数据分析、机器学习、Web开发以及云服务接口调用等。对于腾讯云服务的开发者而言,`tencentcloud-sdk-python`是一个不可或缺的...

    Python库 | tencentcloud-sdk-python-memcached-3.0.556.tar.gz

    5. **异常处理**:提供错误处理机制,使得在处理网络问题或服务端异常时能够优雅地恢复。 6. **安全性**:可能包含安全认证机制,确保通信过程中的数据安全。 使用tencentcloud-sdk-python-memcached-3.0.556,...

    Python库 | tencentcloud-sdk-python-asr-3.0.406.tar.gz

    在实际项目中,`tencentcloud-sdk-python-asr`可以与其他Python库结合使用,如`pydub`处理音频文件,`Flask`或`Django`构建Web应用,或`pandas`处理识别结果。通过这样的集成,可以构建出完整的语音识别解决方案。 ...

    Python库 | tencentcloud-sdk-python-scf-3.0.534.tar.gz

    - 在处理大量并发请求时,注意函数的并发限制,避免超出配额导致请求失败。 - 函数的冷启动时间需要注意,尽量减少不必要的资源消耗,优化函数的启动速度。 - 对于长时间运行的任务,考虑使用定时任务或者消息队列来...

    Python库 | tencentcloud-sdk-python-tbp-3.0.260.tar.gz

    安装TencentCloud SDK for Python TBP 3.0.260非常简单,可以通过pip命令进行: ```bash pip install tencentcloud-sdk-python-tbp-3.0.260 ``` 安装完成后,开发者可以在Python代码中导入所需的模块,例如: ```...

    Python库 | tencentcloud-sdk-python-cwp-3.0.398.tar.gz

    在实际项目中,开发者可以通过安装`tencentcloud-sdk-python-cwp-3.0.398`压缩包,然后导入库,调用相应的API接口来实现上述功能。通常,首先需要进行身份认证,然后就可以进行资源操作。例如,下面是一个简单的示例...

    Python库 | tencentcloud-sdk-python-sts-3.0.544.tar.gz

    在给定的资源“tencentcloud-sdk-python-sts-3.0.544.tar.gz”中,我们关注的是一个Python库,这个库专门用于与腾讯云(Tencent Cloud)进行交互,特别是涉及安全临时访问凭证(Security Token Service,简称STS)的...

    Python库 | tencentcloud-sdk-python-sts-3.0.312.tar.gz

    在“tencentcloud-sdk-python-sts-3.0.312.tar.gz”压缩包中,包含了该版本的SDK的所有源代码和必要的文档。解压后,开发者可以查看并了解其内部结构,进一步学习如何集成到自己的项目中。通常,这个库会包含以下...

    Python库 | tccli-3.0.262.1-py2.py3-none-any.whl

    在后端开发中,Python常用于构建Web应用、API服务、数据处理和自动化脚本等。 4. **后端开发**: 后端开发主要关注服务器端的逻辑处理和数据库操作。tccli作为后端开发的工具,可以帮助开发者便捷地与云服务接口进行...

    海康威视web3.0二次开发

    6. **服务器端编程**:虽然大部分交互在前端,但服务器端也扮演着重要角色,如处理请求、存储数据等。开发者可能需要掌握如PHP、Python或.NET等后端编程语言,以及HTTP协议和RESTful API设计。 7. **安全考虑**:在...

    Python库 | mypy-boto3-xray-1.13.3.0.tar.gz

    标题中的“mypy-boto3-xray-1.13.3.0.tar.gz”是一个Python库的压缩包,主要用于增强Boto3库的类型检查功能,并与AWS X-Ray服务集成。这个压缩包包含了版本号为1.13.3.0的库代码。 首先,我们来了解一下`mypy`。...

    PyPI 官网下载 | tencentcloud-sdk-python-cws-3.0.494.tar.gz

    在Python编程环境中,PyPI(Python Package Index)是官方的第三方库分发平台,开发者可以在这里发布和下载各种Python软件包。资源"tencentcloud-sdk-python-cws-3.0.494.tar.gz"是从PyPI官网获取的,它是一个用于...

    Python库 | arrogant-3.0.tar.gz

    在后端开发中,Python库如Django和Flask是流行的Web框架,它们提供模板引擎、路由系统、数据库集成等功能,方便快速构建Web应用。而像SQLAlchemy这样的ORM(对象关系映射)库,可以简化数据库操作。对于API开发,...

    Python库 | py21-1.3.0-py3-none-any.whl

    在给定的标题"Python库 | py21-1.3.0-py3-none-any.whl"中,"py21"可能是库的名称,而"1.3.0"代表这个版本是该库的第1.3.0次更新,"py3"表明它是针对Python 3.x编写的,"none-any"则意味着它不依赖于特定的平台或ABI...

    PyPI 官网下载 | tencentcloud-sdk-python-btoe-3.0.517.tar.gz

    这个压缩包“tencentcloud-sdk-python-btoe-3.0.517.tar.gz”是从PyPI官网上获取的,专门针对腾讯云服务的Python SDK,用于在Python环境中方便地调用腾讯云的BTOE(Business to Everything)服务。 **Python 开发...

    PyPI 官网下载 | tencentcloud-sdk-python-apcas-3.0.383.tar.gz

    安装这款SDK非常简单,首先解压下载的tar.gz文件,然后在Python环境中使用pip进行安装,命令如下: ```bash pip install tencentcloud-sdk-python-apcas-3.0.383 ``` 在使用SDK之前,需要配置好腾讯云的密钥...

    Python库 | fondat-aws-3.0a18.tar.gz

    在现代Web应用和微服务架构中,异步处理变得越来越重要。Fondat-AWS利用Python的asyncio库,使得开发者可以并行执行多个AWS操作,极大地提高了程序的运行效率。这对于处理大量并发请求或执行耗时的云操作时尤为关键...

    Python-一个自己写的python3的简单到发指的爬虫

    在这个“Python-一个自己写的python3的简单到发指的爬虫”的项目中,我们将深入探讨Python3的基本爬虫实现,以及涉及到的相关知识点。 首先,我们要了解Python3爬虫的基础,这通常包括HTTP/HTTPS协议、网络请求库...

Global site tag (gtag.js) - Google Analytics