In this article, I'll show you some sample code which store geopoint data by just clicking on Google Map. Before we go, perhaps you can read the djangoforms documentation. This will help you to understand the codes in this article.
Please create a directory for this article, copy my_geopt.py to the directory and create 3 brand new files app.yaml, main.py, and index.html. That's all.
After creating these files, start local dev server, get access to localhost, and see that you can specify a particular GeoPt by just clicking on the Google Map.
And here is a live demo(slightly more complicated, but basically almost the same).
Happy coding :-)
app.yaml
application: geotest version: 1 runtime: python api_version: 1 handlers: - url: /.* script: main.py
main.py
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
import os
import wsgiref.handlers
from google.appengine.ext import db
from google.appengine.ext.webapp import template
from google.appengine.ext.db import djangoforms
import my_geopt
class Place(db.Model):
name = db.StringProperty()
description = db.StringProperty()
geopoint = db.GeoPtProperty()
date = db.DateTimeProperty(auto_now=True)
class PlaceForm(djangoforms.ModelForm):
class Meta:
model = Place
class MainPage(webapp.RequestHandler):
def post(self):
data = PlaceForm(data=self.request.POST)
if data.is_valid():
# Save the data, and redirect to the view page
entity = data.save(commit=False)
entity.put()
self.redirect('/')
else:
# Reprint the form
contents = {'form': data}
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path, contents))
def get(self):
contents = {'form': PlaceForm()}
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path, contents))
application = webapp.WSGIApplication(
[('/', MainPage),],
debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
index.html (Please replace 2 YOURAPIKEYs with your Maps API Key)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>GeoPtWidgets Example</title>
<script src="http://maps.google.com/maps?file=api&v=2&key=YOURAPIKEY"
type="text/javascript"></script>
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=YOURAPIKEY"
type="text/javascript"></script>
<script src="http://www.google.com/uds/solutions/localsearch/gmlocalsearch.js"
type="text/javascript"></script>
<style type="text/css">
@import url("http://www.google.com/uds/css/gsearch.css");
@import url("http://www.google.com/uds/solutions/localsearch/gmlocalsearch.css");
</style>
</head>
<body onunload="GUnload()">
<h1>GeoPtWidgets Example</h1>
<form method="post" action="/">
{{ form.as_p }}
<input type="submit" value="register"/>
</form>
</body> </html>
1 comment:
very good work. Thanks. Thomas Richter
Post a Comment