This repository was archived by the owner on May 21, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
63 lines (49 loc) · 2.32 KB
/
main.py
File metadata and controls
63 lines (49 loc) · 2.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/env python
import os
import jinja2
import webapp2
import datetime
# Jinji moramo nastaviti kje se nahajajo nasi templati.
# Najprej z uporabo 'os' modula (modul za delo z funkcionalnostjo operacijskega sistema) zdruzimo pot - 'os.path.join()' - direktorija
# v kateri se nahaja 'main.py' - 'os.path.dirname(__file__)' - z direktorijem 'templates'.
template_dir = os.path.join(os.path.dirname(__file__), "templates")
# Nato pa jinji nastavimo direktorij s templati.
jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), autoescape=False)
# BaseHandler bomo uporabljali za lazje delo z GAE fukcionalnosjo.
# Vsi nasi handlerji bodo dedovali BaseHandler.
class BaseHandler(webapp2.RequestHandler):
def write(self, *a, **kw):
return self.response.out.write(*a, **kw)
def render_str(self, template, **params):
t = jinja_env.get_template(template)
return t.render(params)
def render(self, template, **kw):
return self.write(self.render_str(template, **kw))
def render_template(self, view_filename, params=None):
if params is None:
params = {}
template = jinja_env.get_template(view_filename)
return self.response.out.write(template.render(params))
class MainHandler(BaseHandler):
def get(self):
# Parametre iz backenda posiljamo v frontend v obliki dictionaryja.
# V templatu se bomo na podatke sklicevali preko njegovega kljuca
sporocilo = {"ime": "Matevz"}
return self.render_template("hello.html", params=sporocilo)
class PodstranHandler(BaseHandler):
def get(self):
# Seveda lahko v frontend posljemo vec razlicnih podatkov
sporocilo = {"ime": "Matevz",
"sporocilo": "moje kratko sporocilo"}
return self.render_template("podstran1.html", params=sporocilo)
class TimeHandler(BaseHandler):
def get(self):
# S pomocjo dateime modula, bomo vsakic ko se stran osvezi, prikazali trenuten cas
sporocilo = {"trenutni_cas": datetime.datetime.now()}
return self.render_template("time.html", params=sporocilo)
# Ne pozabi mapirati pravilnih handlerjev na pravilne endpointe
app = webapp2.WSGIApplication([
webapp2.Route('/', MainHandler),
webapp2.Route('/podstran', PodstranHandler),
webapp2.Route('/time', TimeHandler),
], debug=True)