Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 19 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,15 @@ jolla is a pure API server framework,and it is based on the gevent.

> still being constrating

##Install
version:1.1.0
- basic work have done,it's already a api server for api collect.
- delete the statics function,if you wanna css or js,use cdn or server like nginx and apache httpd;

sudo pip install jolla
## INSTALL

```
sudo pip install jolla
```

## QUICKSTART
add a `app.py`,and write dowm:
Expand All @@ -21,6 +27,14 @@ session = session()
def index(request):
return plugins.render('index.html')

def chinese(request):
try:
if request['data']['ww']=='海贼王':
return 'great anime'
except:
pass
return 'yeah!chinese'


def data(request):
data = {'data': request['id']}
Expand All @@ -29,6 +43,7 @@ def data(request):

def add(request):
session.add_value('qq', 'ww')

return 'yes'


Expand Down Expand Up @@ -56,12 +71,9 @@ class app(server.WebApp):
(r'/data', data),
(r'/add', add),
(r'/get', get),
(r'/blog', blog)
(r'/blog', blog),
(r'/chinese',chinese)
]

if __name__ == '__main__':
server = server.jolla_server(app)
server.run_server()
```

and then,run:
Expand Down
19 changes: 19 additions & 0 deletions example/ajax_calculater.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from jolla import WebApp,jolla_server,render_json,render

def index(request):
return render('index.html')

def add(request):
return render_json({'answer':int(request['data']['a'])+int(request['data']['b'])})

class app(WebApp):
urls = [
(r'/', index),
(r'/add', add)
]

templates='cal'

if __name__ == '__main__':
server = jolla_server(app)
server.run_server()
14 changes: 12 additions & 2 deletions example/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,15 @@ def index(request):
return plugins.render('index.html')


def chinese(request):
try:
if request['data']['ww'] == '海贼王':
return 'great anime'
except:
pass
return 'yeah!'


def data(request):
data = {'data': request['id']}
return plugins.render_json(data)
Expand Down Expand Up @@ -50,9 +59,10 @@ class app(server.WebApp):
(r'/data', data),
(r'/add', add),
(r'/get', get),
(r'/blog', blog)
(r'/blog', blog),
(r'/chinese', chinese)
]

if __name__ == '__main__':
server = server.jolla_server(app)
server.run_server()
server.run_server(reload = True)
34 changes: 34 additions & 0 deletions example/cal/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<!DOCTYPE html>
<html>

<body>
<p>two numbers</p>
<form action="/add/" method="get">
a:
<input type="text" id="a" name="a">
<br> b:
<input type="text" id="b" name="b">
<br>
<p>result: <span id='result'></span></p>
<button type="button" id='sum'>submit</button>
</form>

<script src="http://apps.bdimg.com/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("#sum").click(function() {
var a = $("#a").val();
var b = $("#b").val();

$.get("/add/", {
'a': a,
'b': b
}, function(ret) {
$('#result').html(ret.answer);
})
});
});
</script>
</body>

</html>
10 changes: 5 additions & 5 deletions example/templates/index.html
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<!DOCTYPE html>
<html>

<head>
<title>index</title>
</head>

<meta charset="utf-8" />
</head>
<body>
<h1 style="margin:auto 0">hello world!</h1>
</body>

<h1>hello world!我是汉字</h1>
</body>
</html>
8 changes: 4 additions & 4 deletions jolla/HTTPerror.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,25 @@ class HTTP404Error(HTTPError):
error_code = 404

def __str__(self):
return "404 NOT FOUND"
return "<404 NOT FOUND>"


class HTTP502Error(HTTPError):
error_code = 502

def __str__(self):
return "502 SERVER ERROR"
return "<502 SERVER ERROR>"


class HTTP403Error(HTTPError):
error_code = 403

def __str__(self):
return "403 FORBBIDEN"
return "<403 FORBBIDEN>"


class HTTP500Error(HTTPError):
error_code = 500

def __str__(self):
return "server error"
return "<server error>"
Binary file added jolla/HTTPerror.pyc
Binary file not shown.
Binary file added jolla/__init__.pyc
Binary file not shown.
42 changes: 33 additions & 9 deletions jolla/plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,48 @@

import json
import os
from HTTPerror import HTTP404Error
from server import static_setting


def render(filename):
with open(os.path.abspath('templates/' + filename), "r") as f:
res = f.read()
if static_setting['templates'][-1] != '/':
static_setting['templates'] = static_setting['templates'] + '/'

return (res, ('Content-Type', 'text/html'))
try:
with open(os.path.abspath(static_setting['templates'] + filename), "r") as f:
res = f.read()

return (res, ('Content-Type', 'text/html'))

def render_json(data):
except IOError:
print "<NO SUCH FILE>"
raise HTTP404Error


def render_json(data,indent=0):
if isinstance(data, dict):
return (json.dumps(data), ('Content-Type', 'application/json'))
return (json.dumps(data,ensure_ascii=False,indent=indent), ('Content-Type', 'application/json'))
else:
print "<the data must be dict>"
raise AttributeError


def render_media(filename):
with open(os.path.abspath('statics/' + filename), "r") as f:
res = f.read()

return res
if static_setting['statics'][-1] != '/':
static_setting['statics'] = static_setting['statics'] + '/'

try:
with open(os.path.abspath(static_setting['statics'] + filename), "r") as f:
res = f.read()

if 'css' in filename[-4:]:
content = ('Content-Type', 'text/css')
elif 'js' in filename[-4:]:
content = ('Content-Type', 'application/javascript')
else:
raise HTTP404Error
return (res, content)

except IOError:
raise HTTP404Error
Binary file added jolla/plugins.pyc
Binary file not shown.
Loading