3

正規表現を使用して、URL からビューに 2 つの入力を取得しようとしています。

私の urls.py 行は次のようになります

(r'^blog/(?P<match>.+)/', 'blog.views.blog'),

これが私の見解です

def blog(request, match):
    pieces = match.split('/')

ただし、私の URL が「root.com/blog/user/3」の場合pieces[user].

[user],[3]` の場合pieces to return、URL の末尾にスラッシュを追加する必要があります: "root.com/blog/user/3/"

私の知る限り、私の Python シェルによると、最初の URL が返されたはずです。[user],[3]

何か不足していますか?それとも、Django は実際に Python とは異なる方法で文字列を分割しますか?

4

1 に答える 1

3

問題は、パターンがスラッシュで終わるため正規表現が URL 全体と一致しないことですが、URL は一致しません。

しかし、最後に明示的なものがない正規表現は文字列のプレフィックス$と一致するため、変数を見てみると、それがであることがわかります。期待どおりではありません。matchuser/user/3

更新:(より詳細な説明)

r'^blog/.*/'[blog/user/]および(実際に一致[blog/user/]3した部分を示すために使用される角括弧)。

試してみると、最後にスラッシュがないため、まったく一致しないr'^blog/.*/$'ことがわかります。blog/user/3

于 2013-05-30T19:04:27.577 に答える