【问题标题】:django and url creationdjango 和 url 创建
【发布时间】:2013-10-29 10:35:46
【问题描述】:

我要构造如下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 和 image 都存在)时,我遇到了这个问题。

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

回溯显示我上面的那一行

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

空字符串('')是否意味着它没有正确解析来自 URL 的 id?我的网址格式不正确吗?

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

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

抱歉发布问题...(如何删除我自己的问题?)

【问题讨论】:

  • 不要删除它,这不是一个坏问题。有人可能会再次犯同样的错误
  • 真的吗?只是不够谨慎哈哈:)

标签: django url-pattern


【解决方案1】:

正确的网址是:

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

你应该把模式放在 parentnesses 中。

【讨论】:

  • 在我看来,保留斜杠是一种很好的做法。
猜你喜欢
  • 2014-11-06
  • 2019-06-29
  • 2017-09-20
  • 2017-10-20
  • 1970-01-01
  • 1970-01-01
  • 2020-07-14
  • 2018-12-11
  • 1970-01-01
相关资源
最近更新 更多