質問

私は何をしたいURIを持つページを保持いくつかのミニCMSを構築している。

そのページを表示している場合があり、現在の要求の同じURIで利用可能なページだ、とあれば、データストアでチェック私のviews.py内の関数への私のurls.pyポイントの最後のルートます。

私はモデルを持っています:

class Page(db.Model): 
  title = db.StringProperty(required=True) 
  uri = db.TextProperty(required=True) 
  created = db.DateTimeProperty(auto_now_add=True) 
  modified = db.DateTimeProperty(auto_now=True) 
  content = db.TextProperty() 

私の見解でます:

def show(request): 
  page = db.GqlQuery('SELECT * FROM Page WHERE uri=:uri', uri=request.path).get() 
  if page is None: 
    return http.HttpResponseNotFound() 
  else: 
    return respond(request, 'pages_show', {'content': request.path}) 

そして、私は、データストアへのURIとして「/仕事」でエンティティを追加しました。

request.pathは「/仕事は」正確であっても、クエリが一致を返しません。

あなたが私を与えることができます何かアドバイスをありがとう!

そして、はい、私はPythonのnoobのだ、App Engineは最終的には、言語を学ぶのに最適です。

役に立ちましたか?

解決

私は解決策を見つけた!

問題がモデルです。

アプリケーションエンジンのデータストアではなく、インデックスTextPropertyありません。その型を使用すると、最初から間違っていたので、私はインデックスを取得んStringProperty、それを変更し、ひいてはそのデータストアは、私たちは、WHERE句で使用することができます。

ワーキングモデルの例:

   class Page(db.Model): 
      title = db.StringProperty(required=True) 
      // string property now
      uri = db.StringProperty(required=True) 
      created = db.DateTimeProperty(auto_now_add=True) 
      modified = db.DateTimeProperty(auto_now=True) 
      content = db.TextProperty()

他のヒント

あなたが名前のキーワード引数(「URI =:URI」)を使用している場合は、

、あなたは明示的に指定キーワードにパラメータをバインドする必要があります。代わりに:

# incorrect named parameter
GqlQuery('SELECT * FROM Page WHERE uri=:uri', request.path).get()

あなたが欲しい。

# correct named parameter
GqlQuery('SELECT * FROM Page WHERE uri=:uri', uri=request.path).get()

またはあなただけの位置パラメータを使用することができます:

# correct positional parameter
GqlQuery('SELECT * FROM Page WHERE uri=:1', request.path).get()
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top