2013-10-29 37 views
0

我希望构造以下网址Django和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) 

但是,当我尝试查看编辑/ 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})$,...) 

对不起,张贴问题...(我如何删除我自己的问题里面? )

+0

不要删除它,这不是一个坏问题。有人可能会再次犯同样的错误 – yuvi

+0

这是真的吗?只是不够谨慎大声笑:) – Apostolos

回答

1

正确的URL是:

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

你应该把模式在parentnesses。

+0

是ty ....我的眼睛正在玩技巧... – Apostolos

+0

在我看来,保持尾随斜线是一个很好的做法。 – iMom0