2009-11-15 44 views
2

我是一個Python新手,所以我確信這很容易。以下是我的main.py中的代碼:如何從Google App Engine中的Django 1.1導入render_to_response方法?

import os 
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 

from google.appengine.dist import use_library 
use_library('django', '1.1') 

# Use django form library. 
from django import forms 
from django.shortcuts import render_to_response 

最後一行以ImportError爲中斷。如果我不包括那個,那麼我得到一個「render_to_response」不可用的錯誤。我究竟做錯了什麼?

回答

0

在這種情況下,問題最終是,谷歌App Engine使用的Django的版本0.96,它實際上無法找到「重定向」方法,因爲這只是在Django 1.1中。如果您使用GAE實用程序方法'use_library',則可以指定要使用的Django框架的版本,並且此問題會消失。

2

好,render_to_responseis a shortcut for this,所以這給一試:

from django.template import Context, loader 
from django.http import HttpResponse 

def render_to_response(tmpl, data): 
    t = loader.get_template(tmpl) 
    c = Context(data) 
    return HttpResponse(t.render(c)) 

render_to_response("templates/index.html", {"foo": "bar"}) 
+0

這樣做的工作,但我寧願不重新定義我的文件中的功能。任何想法爲什麼我的進口聲明不起作用?同時,它也抱怨說,當我將它指定爲完整的操作系統路徑時(例如/www/controller/../templates/template.html),它無法找到我的模板,這是我以前參考該模板的方式。有什麼想法嗎? – Bialecki 2009-11-15 19:53:09

+1

不,因爲我不熟悉Google App Engine。我讀過它的Django實現在幾個方面被扼殺。如果你不想在你的文件中重新定義這個函數,那麼把它放在你的文件中,然後導入它(就像你從'django.shortcuts'那裏得到的那樣,你認爲'django.shortcuts'是什麼?) – 2009-11-15 20:18:36

相關問題