0

アプリがスムーズに実行されるようにするために、次のようなURLの数を一致させようとしています。

私は次のget関数を持っています:

class Competition(Handler):
     def get(self, *a):
        if a:
            print a
        else:
            print 'None'

app = webapp2.WSGIApplication([('/', Index),
                               ('/competitions[/]?([^/]+)[/]?([^/]+)[/]?([^/]*)$', Competition),
                              ],debug=True)

私が現在使用している正規表現は、これを修正したものです。JedSmithが他の誰かを助けています

そして、次の出力を取得します。

/ Competitions / one / two / three =('one'、'two'、'three')-期待される結果
/ Competitions / one / two =('one'、'two'、'')-期待される結果

/ competions / one / =('on'、'e'、'')-予期しない結果
/ competions / one =('on'、'e'、'')-予期しない結果

/ competions /=404-パターンと一致しません
/competitions=404-パターンと一致しません

理想的には、正規表現をベースURLと一致させることから始めたいと思います。

localhost:8080 /コンペティション(末尾の「/」の有無にかかわらず)からコンペティションハンドラーへ

次に、テストできる0個以上の引数を追加します... 0は私のifステートメントの先頭に一致し、後続のステートメントは必要に応じて処理されます。

* aでは最大3つの変数に制限できます(つまり、/ Competitions / one / two / threeが最大です)が、このようなものを処理する方法をよりよく学ぶために、できるだけ多くの変数に一致させる方法を学びたいと思います入力したとおり。

どんな助けでもいただければ幸いです。正規表現は私を混乱させます。

乾杯

  • フォーマットを修正するために編集
4

1 に答える 1

3

したがって、これは機能しているようです。私を正しい方向に向けてくれた@FrankieTheKneeManに感謝します。

class Test(Handler):
    ''' Test Handler '''
    def get(self, variables):
        variables = filter(None, (variables.split('/')))
        if variables:
            print variables
        else:
            print 'None'

および正規表現:

('/test[/]?(.*)', Test),

これにより、末尾のスラッシュまたは変数が追加されていない場合は「なし」になり、末尾のスラッシュの有無にかかわらず入力された変数のリストが返されます。

filterステートメントは、変数から空の文字列を非常にうまく削除し、変数がない場合はNoneを返します。

これがAppEngineを学ぶ他の誰かに役立つことを願っています...それはしばらくの間私を悩ませてきました。

于 2013-01-19T01:24:01.610 に答える