0

DjangoとPythonを始めたばかりなので、まだこれは初めてです。これは私のurls.pyです。

url(r'(?P<slug>[-\w]+)/$','person_detail'),
url(r'(?P<slug>[-\w]+)/delete/$','person_delete'),

問題は、私がurl:slug / delete /を実行しようとすると、その部分全体がslug /delete/をslugとして検索することです。最初のURLの$を削除すると、person_deleteビューには移動しませんが、/ delete /部分を無視してperson_detailビューに移動します。アイデアはありますか?

4

4 に答える 4

6

先頭を追加してみてください^

url(r'^(?P<slug>[-\w]+)/$','person_detail'),
url(r'^(?P<slug>[-\w]+)/delete/$','person_delete'),

とは言うものの、先頭がなければ、ではなく、としてビューを表示^できると思います。foo/delete/person_detailslugdeletefoo/delete

于 2009-11-09T13:36:25.907 に答える
1

のようなものはどうですか

url(r'(?P<slug>[^/]+)/$','person_detail'),
url(r'(?P<slug>[^/]+)/delete/$','person_delete'),

スラグにスラッシュを含めることができないことを確認するには? Django が最初に /.../delete/ に一致するように、逆の順序でルールを設定することもできます。

于 2009-11-09T13:46:10.910 に答える
1

slug フィールドには (文字とダッシュだけでなく) 数字も含まれる可能性があるため、次のように変更する必要があることに注意してください。

SLUG = '(?P<slug>[\w\d-]+)'

url(r'^'+SLUG+'/delete$', delete_method, {}, 'delete_url_name')
于 2012-02-10T14:42:02.217 に答える
0
url(r'(?P<slug>[-\w]+)/delete/$','person_delete'),
url(r'(?P<slug>[-\w]+)/','person_detail'),

このような場合、URL ディスパッチャーは最初の一致を使用するため、URL の順序が重要です。一般的な URL は最後にする必要があります。

于 2009-11-09T14:04:57.480 に答える