其实也是一个很小的应用,需要借助js代码高亮脚本,可以到http://alexgorbatchev.com/wiki/SyntaxHighlighter:Download去下载
下载完,解压到一个新建的目录里面,然后新建一个core.py
#!/usr/bin/env python
import cgi
import datetime
import wsgiref.handlers
from google.appengine.ext import db
from google.appengine.api import users
from google.appengine.ext import webapp
Out ="""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Your code</title>
<script type="text/javascript" src="scripts/shCore.js"></script>
<script type="text/javascript" src="scripts/shBrushBash.js"></script>
<script type="text/javascript" src="scripts/shBrushCpp.js"></script>
<script type="text/javascript" src="scripts/shBrushCSharp.js"></script>
<script type="text/javascript" src="scripts/shBrushCss.js"></script>
<script type="text/javascript" src="scripts/shBrushDelphi.js"></script>
<script type="text/javascript" src="scripts/shBrushDiff.js"></script>
<script type="text/javascript" src="scripts/shBrushGroovy.js"></script>
<script type="text/javascript" src="scripts/shBrushJava.js"></script>
<script type="text/javascript" src="scripts/shBrushJScript.js"></script>
<script type="text/javascript" src="scripts/shBrushPhp.js"></script>
<script type="text/javascript" src="scripts/shBrushPlain.js"></script>
<script type="text/javascript" src="scripts/shBrushPython.js"></script>
<script type="text/javascript" src="scripts/shBrushRuby.js"></script>
<script type="text/javascript" src="scripts/shBrushScala.js"></script>
<script type="text/javascript" src="scripts/shBrushSql.js"></script>
<script type="text/javascript" src="scripts/shBrushVb.js"></script>
<script type="text/javascript" src="scripts/shBrushXml.js"></script>
<link type="text/css" rel="stylesheet" href="styles/shCore.css"/>
<link type="text/css" rel="stylesheet" href="styles/shThemeDefault.css"/>
<script type="text/javascript">
SyntaxHighlighter.config.clipboardSwf = 'scripts/clipboard.swf';
SyntaxHighlighter.all();
</script>
</head>
<body >
<h1>Here is your Code</h1>
<p>Good Luck!</p>
<pre class="brush: %s;">
%s
</pre>
</html>
"""
class CodeStr(db.Model):
content = db.TextProperty()
date = db.DateTimeProperty(auto_now_add=True)
lang = db.StringProperty(multiline=False)
class InputCode(webapp.RequestHandler):
def get(self):
self.response.out.write('<html><body>')
self.response.out.write('Code:')
self.response.out.write("""<form action="/sc" method="post">
<div><select size="4" id= "lang" name="lang">
<option>python</option>
<option>js</option>
<option>xml</option>
<option>bash</option>
</select></div>
<div><textarea name="content" rows="8" cols="70"></textarea></div>
<div><input type="submit" value="Submit"></div>
</form>
</body>""")
class SaveCode(webapp.RequestHandler):
def post(self):
self.code = CodeStr()
self.code.content = self.request.get('content')
self.code.lang = self.request.get('lang')
self.code.put()
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Your code\'s ID is %s\n' % self.code.key().id())
self.response.out.write('You can visit http://billgaesh.appspot.com/o?id=%s to get your code\n' % self.code.key().id())
self.response.out.write('Good Luck')
def get(self):
self.response.out.write('Sorry This doesn\'t work!')
class OutCode(webapp.RequestHandler):
def get(self):
global Out
id = self.request.get('id')
key = db.Key.from_path("CodeStr", int(id))
query = CodeStr.all()
query.ancestor(key)
code = query.get()
s = code.content.replace('<', '<').replace('>', '>')
O = Out % (code.lang, s)
self.response.out.write(O)
application = webapp.WSGIApplication([
('/i', InputCode),
('/sc', SaveCode),
('/o', OutCode)
], debug=True)
def main():
wsgiref.handlers.CGIHandler().run(application)
if __name__ == '__main__':
main()
在新建一个叫app.yaml的文件
application: * version: 13 runtime: python api_version: 1 handlers: - url: /i script: core.py - url: /sc script: core.py - url: /o script: core.py - url: /src static_dir: src - url: /scripts static_dir: scripts - url: /styles static_dir: styles - url: / static_files: test.html upload: test.html
把其中的
application: *
改成你自己注册的app名称,然后用GAE SDK上传到GAE的服务器上就可以了
在 http://*.appspot.com/i 里面输入代码,然后会给你一个ID,在http://*.appspot.com/o?id=** 里面就可以看到你的代码了
目前还比较垃圾,如果不满意的话,可以自行修改以下
http://billgaesh.appspot.com/i 是我的代码贴地址,欢迎使用
目前已知的BUG是如果代码中有“”“,可能会跨站……
