python web编程中webapp2和jinja2模块用于web编程的问题

Python(68)
上一次使用了WSGI提供的接口构建了一个简单的web应用,但是WSGI提供的接口相对于web应用的逻辑来说还是太低级了,如果要处理不同的url那么wsgi里面的处理就会非常麻烦.所以python提供了很多的web框架,我们这需要用装饰器把自己的函数和不同的url关联起来就可以了.
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def home():
return '&h1&Home&/h1&'
@app.route('/signin', methods=['GET'])
def signin_form():
return '''&form action="/signin" method="post"&
&p&&input name="username"&&/p&
&p&&input name="password" type="password"&&/p&
&p&&button type="submit"&Sign In&/button&&/p&
&/form&'''
@app.route('/signin', methods=['POST'])
def signin():
if request.form['username']=='admin' and request.form['password']=='password':
return '&h3&Hello, admin!&/h3&'
return '&h3&Bad username or password.&/h3&'
if __name__ == '__main__':
处理了登陆的url和登陆后处理以及进入主页的请求
在这个基础上我们还可以添加很多的内容,比如前面用来hashlib加密,我们就可以在这里添加register的内容进行注册,然后将注册成功的信息传送到后台,我们存储起来(可以加入sql的内容)
==========================================
当然我们不可能完全用字符串表示html,所以需要使用模板,python自带jinja2模板.注意使用模板要建立一个templates文件夹,然后在里面建立html文件,用{{var}}表示传入的变量,{%xxx%}表示命令
from flask import Flask,request,render_template
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def home():
return '&h1&hello&/h1&'
@app.route('/signin', methods=['GET'])
def signin_form():
return render_template('form.html')
@app.route('/signin', methods=['POST'])
def signin():
if request.form['username']=='admin' and request.form['password']=='password':
print(render_template('home.html',username = request.form['username']))
return render_template('home.html',username = request.form['username'])
return (render_template('form.html',message = 'Bad username or password'))
if __name__ == '__main__':
app.debug = True
Please Sign in
message %}
style="color:red"&{{ message }}&
action="/signin" method="post"&
& name="username"&&
& name="password" type="password"&&
& type="submit"&Sign In&&
&!DOCTYPE HTML&
&Welcome, {{ username }}&
src = ./static/test.PNG&
&Welcome, {{ username }}!&
注意,图片等本地资源必须要使用相对路径,使用物理路径是不能被识别的!!!!!这个问题搞了我3个小时………
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:24010次
积分:3438
积分:3438
排名:第6925名
原创:330篇
(10)(10)(22)(10)(4)(15)(67)(16)(4)(22)(12)(44)(75)(31)你可能喜欢
12345678910
12345678910
关于本站 本站以分享运维技术为主,欢迎大家参与技术分享,同时也欢迎大家吐槽,本站提供以下交流圈:QQ群①:*****(满)QQ群②:6690706 QQ群③: QQ群④:(新) 微信公众号:ttlsacom 商务合作QQ:【知识库】不懂你就OUT了!11款常见的Web应用程序框架
发表于 16:13|
作者CSDN CODE
摘要:本文推荐了11款常见的Web应用程序框架,并列出了相关的学习资料和下载文档。如果对这些项目还不熟悉,就赶紧学起来吧~
Rails是Ruby on Rails的简称,是一款开源的Web应用框架,采用Ruby语言,其设计原则是“不做重复的事”和“惯例优于设置”,是一款更符合实际需要而且更加高效的Web开发框架。Rails是一个全栈式的MVC框架,使用它可以实现MVC模式中的各个层次,并使它们无缝地协同运转起来。除此以外,还有编写更少的代码、零周转时间等优点。()
代码托管地址:
推荐相关文档:
推荐下载资源:
ExpressExpress是 Node.js 的一个MVC开发框架,支持jade等多种模板,是Node.js上最流行的Web开发框架。提供一系列强大特性帮助你创建各种Web应用。Express不对Node.js已有的特性进行二次抽象,只是在Node.js基础上扩展了Web应用所需的功能。()
代码托管地址:
推荐相关文档:
Django是一个由Python写成的开源的Web应用框架。采用了MVC的软件设计模式。它开发最初是被用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站,并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。Django的主要目标是使开发复杂、数据库驱动的网站变得简单。Django注重组件的重用性和“可插拔性”,敏捷开发和DRY(Don't Repeat Yourself)法则。()代码托管地址:
推荐相关文档:推荐下载资源:
MeteorMeteor是一种新型JavaScript框架,用于WebApp应用程序开发。Meteor的基础构架是Node.JS+MongoDB,它把这个基础构架同时延伸到了浏览器端,如果App用纯JavaScript写成,JS APIs和DB APIs就可以同时在服务器端和客户端无差异地调用,本地和远程数据通过DDP(Distributed Data Protocol)协议传输。因此部分应用如TODO列表,网络在线和离线下使用功能完全没有差异,动作响应和数据延迟也完全感觉不出来。()
代码托管地址:
推荐相关文档:
CakePHP是一款基于PHP的免费开源框架,运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目可以让PHP开发人员快速地开发出健壮、灵活的Web应用。()代码托管地址:
推荐相关文档:推荐下载资源:
Symfony是一款基于MVC架构的PHP开源框架,基于PHP5开发,其致力于减少重复代码的编写,以加速Web应用的开发和维护。并且在企业背景下构建非常健壮的应用。Symfony拥有简单的模板功能、缓存管理、自定义URL等特点。对于新手来说,也非常容易上手。()代码托管地址:
推荐相关文档:推荐下载资源:
SinatraSinatra是一款非常轻量的Web框架,基于Ruby语言开发,旨在以最小的精力为代价快速创建Web应用为目的的DSL(领域专属语言)。Sinatra最大的特点就是非常轻量、快速,整个源码也只有1000多行。()
代码托管地址:
推荐相关文档:
FlaskFlask是一个轻量级的、高扩展性的Web应用“微”框架,使用最简单的核心,并允许你通过Flask-extension扩展各种功能,以满足Web应用开发中的所有需求。Flask依赖于两个外部库:Jinja2 模板引擎和Werkzeug WSGI工具集。()
代码托管地址:
推荐相关文档:
LaravelLaravel是一个简单优雅的PHP Web开发框架,允许开发者通过简单、高雅、表达式语法开发出很棒的Web应用,将开发者从意大利面条式的代码中解放出来。Laravel在功能上具有语法表现力更丰富、高质量的文档、丰富的扩展包、开源免费等优点。其次,Laravel易于理解并且非常强大,它提供了强大的工具用以开发大型、健壮的应用。()
代码托管地址:
推荐相关文档:推荐下载资源:
SailsSails是一个构建于Node.js基础之上的实时MVC框架,能够帮助开发人员轻松构建自定义、企业级的Node.js应用。它设计成类似于Ruby on Rails的MVC架构,但支持较为现代的风格,且是面向数据的Web应用程序开发。它特别适合实时功能开发,如聊天。得克萨斯州奥斯汀的Balderdash团队在4月9日发布了Sails 0.8.9版。Balderdash团队长期并持续地致力于为现代Web应用打造类Rails的开发平台。()
代码托管地址:
推荐相关文档:
RevelRevel 是 Go 的全堆栈Web框架,其思路完全来自 Java 的 Play Framework,授权协议为MIT。
代码托管地址:
推荐相关文档:
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章1622人阅读
如今Python(151)
webpy的模板感觉写小的网页还可以,但是如果要是写比较多的html标签就会显得非常乱,于是决定使用jinja2,这个模板类似django的模板,而且跟其他pythonweb框架的兼容性也比较好。
在项目目录下新建一个settings文件
#-*- coding: utf-8 -*-
__author__
= 'orangleliu'
settings of the project
import web
from web.contrib.template import render_jinja
#------------------debug----------------------
debug = 'SERVER_SOFTWARE' not in os.environ
web.config.debug = debug
#------------------jinja2----------------------
app_root = os.path.dirname(__file__)
templates_path = os.path.join(app_root, 'templates').replace('\\', '/')
render = render_jinja(
templates_path,
encoding='utf-8'
要在项目目录下新建一个templates文件夹来存放模板文件。
#-*- coding: utf-8 -*-
__author__ = 'orangleliu'
filename: index.py
index page handler of this app
import web
from settings import render
class index:
def GET(self):
web.header(&Content-Type&, &text/html&)
return render.index({})
项目文件的结构如下:
这样就可以使用jinja2模板了。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:659958次
积分:10562
积分:10562
排名:第1036名
原创:374篇
转载:31篇
译文:20篇
评论:75条
(1)(2)(4)(2)(3)(5)(3)(2)(2)(2)(2)(7)(12)(12)(10)(8)(6)(7)(4)(7)(18)(14)(15)(12)(26)(67)(7)(16)(8)(15)(6)(5)(1)(4)(1)(8)(31)(64)(4)(1)(1)}

我要回帖

更多关于 python模块化编程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信