Raj*_*eev 12 django django-urls
在下面,如果url被设置为,那么uuid的模式应该是什么?
urls.py
url(r'^getbyempid/(?P<emp_id>[0-9]+)/(?P<factory_id>[0-9]+)$',views.empdetails)
Run Code Online (Sandbox Code Playgroud)
不起作用,
http://10.0.3.79:8000/app1/getbyempid/1/b9caf199-26c2-4027-b39f-5d0693421506
Run Code Online (Sandbox Code Playgroud)
但这很有效
http://10.0.3.79:8000/app1/getbyempid/1/2
Run Code Online (Sandbox Code Playgroud)
vis*_*ell 39
由于Django的2.0,你甚至都不需要担心的正则表达式UUID和诠释新的Django特点:路径转换器.
让代码再次优雅:
from django.urls import path
...
urlpatterns = [
...
path('getbyempid/<int:emp_id>/<uuid:factory_id>', views.empdetails)
]
Run Code Online (Sandbox Code Playgroud)
Ala*_*air 37
除了数字0-9之外,uuid还可以包括数字af和连字符,因此您可以将模式更改为
(?P<factory_id>[0-9a-f-]+)
Run Code Online (Sandbox Code Playgroud)
你可以有一个更严格的正则表达式,但它通常不值得.在您的视图中,您可以执行以下操作:
try:
factory = get_object_or_404(Factory, id=factory_id)
except ValueError:
raise Http404
Run Code Online (Sandbox Code Playgroud)
它将处理数据库中不存在的无效uuids或uuids.
只是为了完成其他的答案,请注意,正则表达式应该是a-f
没有a-z
,那么:
urlpatterns = [
url(r'^request/(?P<form_id>[0-9A-Fa-f-]+)', views.request_proxy)
]
Run Code Online (Sandbox Code Playgroud)
上面的内容可能是最准确的答案。
归档时间: |
|
查看次数: |
17322 次 |
最近记录: |