django和网址创建

时间:2013-10-29 10:35:46

标签: django url-pattern

我想构建以下网址

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?我的网址模式不正确吗?

编辑:该死的我的眼睛......需要把\ d +和图像reg模式放在括号内

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

很抱歉发布了一个问题...(如何删除自己的问题?)

1 个答案:

答案 0 :(得分:1)

正确的网址是:

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

您应该将模式放在父母身上。