Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django URL uuid不工作_Django_Django Urls - Fatal编程技术网

Django URL uuid不工作

Django URL uuid不工作,django,django-urls,Django,Django Urls,在下面的例子中,如果url设置为,那么uuid的模式应该是什么 url.py url(r'^getbyempid/(?P<emp_id>[0-9]+)/(?P<factory_id>[0-9]+)$',views.empdetails) 但这是有效的 http://10.0.3.79:8000/app1/getbyempid/1/2 您的url模式仅包含数字,请尝试以下模式: url(r'^getbyempid/(?P<emp_id>[0-9a-z-]+)

在下面的例子中,如果url设置为,那么uuid的模式应该是什么

url.py

url(r'^getbyempid/(?P<emp_id>[0-9]+)/(?P<factory_id>[0-9]+)$',views.empdetails)
但这是有效的

http://10.0.3.79:8000/app1/getbyempid/1/2

您的url模式仅包含数字,请尝试以下模式:

url(r'^getbyempid/(?P<emp_id>[0-9a-z-]+)/(?P<factory_id>[0-9a-z-]+)$',views.empdetails)
url(r'^getbyempid/(?P[0-9a-z-]+)/(?P[0-9a-z-]+)$,views.empdetails)

除了数字0-9之外,uuid还可以包括数字a-f和连字符,因此您可以将模式更改为

(?P<factory_id>[0-9a-f-]+)

它将处理无效的UUID或数据库中不存在的UUID。

为了完成其他答案,请注意正则表达式应该是
a-f
而不是
a-z
,因此:

urlpatterns = [
    url(r'^request/(?P<form_id>[0-9A-Fa-f-]+)', views.request_proxy)
]
urlpatterns=[
url(r'^request/(?P[0-9A-Fa-f-]+),视图。请求\代理)
]

类似上面的内容可能是最准确的答案。

自从Django 2.0以来,您甚至不需要担心带有新Django特性的UUID和int的正则表达式:

让代码再次优雅起来

from django.urls import path
...

urlpatterns = [
    ...
    path('getbyempid/<int:emp_id>/<uuid:factory_id>', views.empdetails)
]
从django.url导入路径
...
URL模式=[
...
路径('getbyempid/',views.empdetails)
]
也有同样的问题,
修正了这个问题:

url(r'^offer\u details/(?P[0-9a-f\-]{32,})$,offer\u details,name='offer\u details')
`

您可能需要添加一个
尝试。。。ValueError除外:raise Http404()
为了将不可转换为uuid的输入视为无效的uuid。@Moooeeep很好的一点-如果您使用的是
UUIDField
,则需要捕捉
ValueError
来处理不可转换为uuid的字符串。我认为
UUIDField
会在uuid无效时抛出
ValidationError
畸形的;更具体地说,我认为路径转换器在
re_path
@vishes_shell中不起作用,但您需要做一些更改:
urlpatterns = [
    url(r'^request/(?P<form_id>[0-9A-Fa-f-]+)', views.request_proxy)
]
from django.urls import path
...

urlpatterns = [
    ...
    path('getbyempid/<int:emp_id>/<uuid:factory_id>', views.empdetails)
]