Я создал сайт на основе Google App Engine.Он включает в себя десять моделей, которые выполняют несколько простых расчетов на основе пользовательских данных.Ранее это было написано с использованием Python 2.5 с использованием djangoform.modelform и db.model для обработки данных.Поскольку Python 2.7 не поддерживает djangoform.modelform, я хотел бы вместо этого использовать модель формы django.Тем не менее, во время миграции я столкнулся с некоторыми проблемами (разорвать внутреннюю ошибку).когда я пытался добавить форму с помощью Django.forms.Modelform.Я предоставил свои старые коды и новый (не работает).Мои вопросы:
Как использовать библиотеку Django для решения моей проблемы?
Если это возможно, должен ли я сделать свой веб-сайтпроект и создать десять приложений для моделей?
Должен ли я изменить свой файл yaml и создать новый url.py, setting.py и т. д.?
Я очень благодарен за любые комментарии и предложения.Я использую Python 2.7, GAE 1.6.2 и Django 1.2.
Вот код (код 1) с проблемой.
import webapp2 as webapp
import django
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext.webapp import template
import os
from django.db import models
from django.forms import ModelForm
class trexInp(models.Model):
chemical_name = models.CharField(max_length=255)
class trexInput(ModelForm):
class Meta:
model = trexInp
class trexInputPage(webapp.RequestHandler):
def get(self):
html = str(trexInput())
self.response.out.write(html)
app = webapp.WSGIApplication([('/.*', trexInputPage)], debug=True)
def main():
run_wsgi_app(app)
if __name__ == '__main__':
main()
Для сравнения я прикрепил старый код (Код 2).
import webapp2 as webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db
from google.appengine.ext.webapp import template
from google.appengine.ext.db import djangoforms
class trexInp(db.Model):
chemical_name = db.StringProperty()
class trexInput(djangoforms.ModelForm):
class Meta:
model = trexInp
class trexInputPage(webapp.RequestHandler):
def get(self):
html = str(trexInput())
self.response.out.write(html)
app = webapp.WSGIApplication([('/.*', trexInputPage)], debug=True)
def main():
run_wsgi_app(app)
if __name__ == '__main__':
main()
Вот мой файл app.yaml
application: pypest1
version: 1
runtime: python27
api_version: 1
threadsafe: false
libraries:
- name: numpy
version: latest
- name: webapp2
version: latest
- name: django
version: "1.2"
handlers:
- url: /
script: main.py
- url: /index.html
script: main.py
#t-rex
- url: /trex_input.html
script: trex/trex_input.py
Мой файл main.py import os os.environ ['DJANGO_SETTINGS_MODULE'] = 'global_settings' import webappapp2as webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext.webapp import template
from google.appengine.ext.db import djangoforms
class defaultPage(webapp.RequestHandler):
def get(self):
html = template.render('templates/01.html', {'title':'model'})
self.response.out.write(html)
app = webapp.WSGIApplication([('/.*', defaultPage)], debug=True)
def main():
run_wsgi_app(app)
if __name__ == '__main__':
main()
Вот журнал сервера:
2012-02-24 22:40:55 Running command: "['C:\\Python27\\pythonw.exe', 'C:\\Program Files (x86)\\Google\\google_appengine\\dev_appserver.py', '--admin_console_server=', '--port=8082', u'C:\\Users\\tao\\Dropbox\\AppPest1']"
WARNING 2012-02-25 03:40:57,216 rdbms_mysqldb.py:74] The rdbms API is not available because the MySQLdb library could not be loaded.
INFO 2012-02-25 03:40:57,486 dev_appserver_multiprocess.py:650] Running application dev~pypest1 on port 8082: http://localhost:8082
INFO 2012-02-25 03:40:57,486 dev_appserver_multiprocess.py:652] Admin console is available at: http://localhost:8082/_ah/admin
WARNING 2012-02-25 03:40:59,211 py_zipimport.py:139] Can't open zipfile C:\Python27\lib\site-packages\setuptools-0.6c11-py2.7.egg-info: IOError: [Errno 13] file not accessible: 'C:\\Python27\\lib\\site-packages\\setuptools-0.6c11-py2.7.egg-info'
INFO 2012-02-25 03:40:59,611 dev_appserver.py:2865] "GET / HTTP/1.1" 200 -
INFO 2012-02-25 03:40:59,671 dev_appserver.py:2865] "GET /stylesheets/style.css HTTP/1.1" 304 -
INFO 2012-02-25 03:40:59,720 dev_appserver.py:2865] "GET /images/valid-xhtml10-blue.png HTTP/1.1" 304 -
INFO 2012-02-25 03:40:59,767 dev_appserver.py:2865] "GET /images/valid-css-blue.png HTTP/1.1" 304 -
INFO 2012-02-25 03:40:59,816 dev_appserver.py:2865] "GET /stylesheets/images/bg.jpg HTTP/1.1" 304 -
INFO 2012-02-25 03:40:59,867 dev_appserver.py:2865] "GET /stylesheets/images/header.jpg HTTP/1.1" 304 -
INFO 2012-02-25 03:41:00,023 dev_appserver.py:2865] "GET /stylesheets/images/intro.jpg HTTP/1.1" 304 -
INFO 2012-02-25 03:41:00,381 dev_appserver.py:2865] "GET /favicon.ico HTTP/1.1" 404 -
INFO 2012-02-25 03:41:01,177 dev_appserver.py:2865] "GET /trex_description.html HTTP/1.1" 200 -
INFO 2012-02-25 03:41:01,538 dev_appserver.py:2865] "GET /stylesheets/style.css HTTP/1.1" 304 -
INFO 2012-02-25 03:41:01,585 dev_appserver.py:2865] "GET /images/valid-xhtml10-blue.png HTTP/1.1" 304 -
INFO 2012-02-25 03:41:01,632 dev_appserver.py:2865] "GET /images/valid-css-blue.png HTTP/1.1" 304 -
INFO 2012-02-25 03:41:01,783 dev_appserver.py:2865] "GET /stylesheets/images/bg.jpg HTTP/1.1" 304 -
INFO 2012-02-25 03:41:01,891 dev_appserver.py:2865] "GET /stylesheets/images/header.jpg HTTP/1.1" 304 -
INFO 2012-02-25 03:41:01,940 dev_appserver.py:2865] "GET /stylesheets/images/intro.jpg HTTP/1.1" 304 -
INFO 2012-02-25 03:41:01,996 dev_appserver.py:2865] "GET /favicon.ico HTTP/1.1" 404 -
WARNING 2012-02-25 03:41:03,632 py_zipimport.py:139] Can't open zipfile C:\Python27\lib\site-packages\setuptools-0.6c11-py2.7.egg-info: IOError: [Errno 13] file not accessible: 'C:\\Python27\\lib\\site-packages\\setuptools-0.6c11-py2.7.egg-info'
ERROR 2012-02-25 03:41:03,657 cgi.py:121] Traceback (most recent call last):
File "C:\Users\tao\Dropbox\AppPest1\trex\trex_input.py", line 33, in <module>
class trexInp(models.Model):
File "C:\Program Files (x86)\Google\google_appengine\lib\django_1_2\django\db\models\base.py", line 50, in __new__
kwargs = {"app_label": model_module.__name__.split('.')[-2]}
IndexError: list index out of range
INFO 2012-02-25 03:41:03,686 dev_appserver.py:2865] "GET /trex_input.html HTTP/1.1" 500 -