Zbudowałem witrynę internetową opartą na Google App Engine. Zawiera dziesięć modeli, wykonując proste obliczenia na podstawie danych wprowadzanych przez użytkownika. Wcześniej był kodowany przy użyciu Pythona 2.5 przy użyciu djangoform.modelform i db.model do obsługi danych. Ponieważ Python 2.7 nie obsługuje djangoform.modelform, chciałbym zamiast tego użyć django modelform. Jednak podczas migracji napotkałem pewne problemy (zepnij błąd wewnętrzny). kiedy próbowałem dodać formularz przez Django.forms.Modelform. Dostarczyłem moje stare kody i nowe (nie działa). Moje pytania to:Jak dodać formularze formularzy przez Django w aparacie aplikacji Google?
Jak używać biblioteki Django do rozwiązania mojego problemu?
Jeśli to możliwe, czy muszę utworzyć projekt strony i utworzyć dziesięć aplikacji dla modeli?
Czy muszę zmodyfikować mój plik yaml i utworzyć nowy adres url.py, setting.py, itp?
Naprawdę doceniam każdy komentarz i sugestię. Korzystam z Pythona 2.7, GAE 1.6.2 i Django 1.2.
Oto kod (kod 1) z problemem.
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()
Aby porównać, podłączyłem stary kod (Code 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()
Oto mój plik 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
Mój plik main.py import os os.environ [ 'DJANGO_SETTINGS_MODULE'] = 'global_settings' import webapp2 jak 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()
Oto rejestr serwera:
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 -
musisz zmienić format kodu - tiret każdego wiersza do 4 pomieszczeń –
Dzięki za sugestię. Przeformatowany. –
Z jakimi problemami się spotykasz? –