gpt4 book ai didi

python - Google App Engine 中的 UnicodeDecodeError

转载 作者:太空宇宙 更新时间:2023-11-03 19:06:58 25 4
gpt4 key购买 nike

在我的项目(使用 Python、Html 和 Jinja2)中,我有一个包含电影图片的主页,每张图片都会指向包含电影数据的特定页面。当我尝试向页面显示电影数据时,出现以下错误(我尝试删除每个元素,例如删除 moving.summary,然后在上述参数上标记错误):

    Traceback (most recent call last):
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1536, in __call__
rv = self.handle_exception(request, response, e)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1530, in __call__
rv = self.router.dispatch(request, response)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1278, in default_dispatcher
return route.handler_adapter(request, response)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1102, in __call__
return handler.dispatch()
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 572, in dispatch
return self.handle_exception(e, self.app.debug)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 570, in dispatch
return method(*args, **kwargs)
File "C:\Users\User\Desktop\imovie-good\main.py", line 77, in get
self.response.out.write(template.render(template_values))
File "C:\Program Files (x86)\Google\google_appengine\lib\jinja2\jinja2\environment.py", line 894, in render
return self.environment.handle_exception(exc_info, True)
File "C:\Users\User\Desktop\imovie-good\movie_data.html", line 7, in top-level template code
<td> Movie Name: {{movie_data.name}}</td>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)

这是我的Python代码:

    import webapp2
import jinja2
import os
import datetime
import time
import cgi
from google.appengine.ext import db
from google.appengine.api import users
from google.appengine.api import images


jinja_environment = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)))

class Movie(db.Model):
name = db.StringProperty()
release_date = db.StringProperty()
duration = db.StringProperty()
director = db.StringProperty()
actors = db.StringProperty(multiline=True)
summary = db.StringProperty(multiline=True)
picture = db.BlobProperty()
trailer = db.StringProperty(multiline=True)
date = db.DateTimeProperty(auto_now_add=True)

class Movie_Data(webapp2.RequestHandler):
def get(self):
movie_key = self.request.get('movie_key')
movie_data = Movie.get(movie_key)

template_values = {'movie_data': movie_data}
template = jinja_environment.get_template('movie_data.html')
self.response.out.write(template.render(template_values))

class Image(webapp2.RequestHandler):
def get(self):
movie = db.get(self.request.get('img_id'))
if movie.picture:
self.response.headers['Content-Type'] = 'image/jpeg'
self.response.out.write(movie.picture)
else:
self.response.out.write("No Image")

class Main(webapp2.RequestHandler):
def get(self):
movies = db.GqlQuery("SELECT * "
"FROM Movie "
"ORDER BY release_date DESC LIMIT 5")
template_values = { 'movies': movies}
template = jinja_environment.get_template('home_page.html')
self.response.out.write(template.render(template_values))

class Admin(webapp2.RequestHandler):
def get(self):
template_values = {}
template = jinja_environment.get_template('admin.html')
self.response.out.write(template.render(template_values))


def post(self):
name = self.request.get('name')
release_date = self.request.get('release_date')
c = time.strptime(release_date,"%m/%d/%Y")
release_date = time.strftime("%m%d%Y",c)
duration = self.request.get('duration')
director = self.request.get('director')
actors = self.request.get('actors')
summary = self.request.get('summary')
picture = self.request.get('img')
trailer = self.request.get('trailer')

movie = Movie(key_name = name)
movie.release_date = release_date
movie.duration = duration
movie.director = director
movie.actors = actors
movie.summary = summary
movie.picture = db.Blob(picture)
movie.trailer = trailer
movie.put()
self.redirect('/')



app = webapp2.WSGIApplication([('/admin', Admin), ('/', Main), ('/img', Image), ('/movie_data', Movie_Data)], debug=True)

这是我的主页 html:

    <html>
<body>
<table>
<th>Top Movies</th>

{% for movie in movies %}
<tr>
<td>{{movie.key().name() }} &nbsp</td>
</tr>
<tr>
<td><a href = "/movie_data?movie_key = {{movie.key()}}"> <img src = "/img?img_id={{movie.key()}}"> </td>


</tr>

{% endfor %}

<a href = "/admin">admin</a>

</table>
</body>
</html>

这是我的 movie_data html 代码:

  <html>
<body>
<div>
<table>
<tr>
<td rowspan ="6">{{ movie_data.picture }}</td>
<td> Movie Name: {{movie_data.name}}</td>
</tr>
<tr>
<td> Release Date: {{movie_data.release_date}}</td>
</tr>
<tr>
<td> Duration (minutes): {{movie_data.duration}}</td>
</tr>
<tr>
<td> Director: {{movie_data.director}}</td>
</tr>
<tr>
<td> Actors: {{movie_data.actors}}</td>
</tr>
<tr>
<td> Summary: {{movie_data.summary}}</td>
</tr>
<tr>
<td colspan ="2"> {{movie_data.trailer}} </td>
</table>
</div>
</body>
</html>

最佳答案

我认为不取决于字符串movie_data.name。更有可能的是,产生错误的实体是movie_data.image。根据 serving blob documentation 检查您的相关代码.

事实上,您需要一个单独的处理程序来提供图像,请参阅 images docs 中的示例。或者只是替换:

{{ movie_data.picture }} 

<img src='data:image/png;base64,{{movie_data.picture.encode("base64")}}'>

关于python - Google App Engine 中的 UnicodeDecodeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14475762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com