For whatever reason, I've found myself porting Python App Engine apps over from App Engine's "django-esque" webapp framework to true django 1.0 with views.py, urls.py, and the like.
Besides learning about how urls.py and views.py work, I had to do some research to figure out how some of the webapp-isms translated to django-isms, so I thought I'd post my findings here in a table comparing the two:
| Webapp | Django |
|---|---|
author = self.request.get('author')
|
What you use depends on how specific you want to be about where parameter was passed:
author = request.GET.get('author')
author = request.POST.get('author')
author = request.REQUEST.get('author')
|
class MyRequestHandler(RequestHandler):
def get(self):
# Do stuff
def post(self):
# Do other stuff
|
def handle_request(request):
if request.method == 'GET':
# do stuff
elif request.method == 'POST':
# do other stuff
|
host = self.request.host |
host = request.get_host() |
url = self.request.uri |
url = request.build_absolute_uri(request.path) |
query_string = request.query_string |
query_string = request.META['QUERY_STRING'] |
self.error(500) |
return HttpResponse(status=500)or from django.http import HttpResponseServerError return HttpResponseServerError() |
self.redirect('/gallery')
|
from django.http import HttpResponseRedirect
return HttpResponseRedirect('/gallery')
|
path = os.path.join(os.path.dirname(__file__), 'index.html') self.response.out.write(template.render(path, template_values)) |
from django.shortcuts import render_to_response
render_to_response('index.html', path)
Or, if for some reason you need the in-between products of that shortcut (like the generated string), you can use the longer version:
from django.template.loader import get_template
from django.template import Context
t = get_template('index.html')
html = t.render(Context(template_values))
return HttpResponse(html)
|
self.response.headers['Content-Type'] = 'application/atom+xml' self.response.out.write(xml_string) |
return HttpResponse(xml, mimetype='application/atom+xml') |
If you have suggestions for better "transformations", please let me know. I'm fairly new to Django and am happy to learn more about the right way to do things.
No comments:
Post a Comment