0

次のURLを構築したい

domain/edit/xray/<id>/<image_name>

ここで、id はモデルの ID で、image_name は画像の名前です。

独自のビューで画像編集を処理するアプリがあります mypil としましょう

mypil.views

def edit_xray(request, id, image_name):
    ....code to get image by name
    ....model by id and edit image using PIL
        model = Model.objects.get(pk=id)

プロジェクト/urls.py

url(r'^edit/', include(mypil.urls))

mypil.urls

url(r'^xray/(?P<id>)\d+/(?P<image_name>)\w+\.\w{3}$', mypil.views.edit_xray)

しかし、edit/xray/1/image.jpg (ID とイメージの両方が存在する) を表示しようとすると、この問題が発生します。

invalid literal for int() with base 10: ''

トレースバックは上記の行を示しています

model=Model.objects.get(pk=id)

空の文字列 ('') は、URL から ID を正しく解析できないことを意味しますか? URL パターンが正しくありませんか?

編集:私の目をくそー.... \d+ とイメージ reg パターンを括弧内に配置する必要がありました

url(r'^xray/(?P<id>\d+)/(?P<image_name>\w+\.\w{3})$,...)

質問を投稿して申し訳ありません...(自分の質問を削除するにはどうすればよいですか?)

4

1 に答える 1

1

正しい URL は次のとおりです。

url(r'^xray/(?P<id>\d+)/(?P<image_name\w+\.\w{3})$', mypil.views.edit_xray)

パターンを括弧に入れてください。

于 2013-10-29T10:40:29.940 に答える