Python、Google AppEngine、Jinjaは初めてです。以下に投稿したコードが多すぎる場合は、申し訳ありません。これは、StackOverflowに投稿した最初の質問です。
(クラス用の)ブログを作成していますが、ユーザーの投稿の改行文字「\n」を置き換える必要があります。データベースを照会する関数は、その結果をrender()関数に送信します。
「\n」を置き換えることになっているコード行を追加するまで、すべてのコードは完全に機能します。
私はさまざまな編集を行いましたが、AppEngine、Jinja、またはPythonがそれを満たすために何をしてほしいかを推測することはできません。
私のデータベースクラスは、' post_content 'を含む4つのタイプでdb_blogKindを設定します
class db_blog(db.Model):
post_subject = db.StringProperty(required = True)
post_content = db.TextProperty(required = True)
post_created = db.DateTimeProperty(auto_now_add = True)
post_last_modified = db.DateTimeProperty(auto_now_add = True)
'Newpost'クラスこれが以下のBlogクラスから' query_select 'オブジェクトを受け取るようにします。
class Newpost(webapp2.RequestHandler):
def write(self, *args, **kwds):
self.response.out.write(*args, **kwds)
def render_str(self, template, **params):
t = jinja_env.get_template(template)
return t.render(params)
def render(self, template, **kwds):
self._render_text = self.post_content.replace("\n", "<br />") ##<-- See here
self.write(self.render_str(template, **kwds))
Blogクラスは、すべてのユーザー投稿を取得し、それらを「Newpost」に送信してレンダリングします。
class Blog(Newpost):
def get(self):
query_select = db.GqlQuery("SELECT * FROM db_blog ORDER BY post_created DESC")
self.render('blog_posts.htm', query_select = query_select)
1.上記のように、コードは次のエラーを生成します。
AttributeError:'ブログ'オブジェクトに属性'post_content'がありません
クラスBlogはdb_blogから継承する必要があると思いますので、(#2を参照)
2.ブログクラスのパラメータリストにdb_blogを追加すると、新しいエラーが発生します。
AttributeError:'NoneType'オブジェクトには属性がありません'replace'
エラーは、存在しないオブジェクトを渡していることを示していると思うので、本当に混乱しています。「\n」文字を置き換えようとしている行をコメントアウトすると、このコードは完全に実行されます。オブジェクトを渡さないようにするにはどうすればよいでしょうか。またはそれが==なしだと主張しますか?
さらに重要なのは、どうすればそれを機能させることができるかです!
ここまで読んでくれたあなたと、私を動かすことができる富の王国に感謝します。