如何使用 path() 在 Django 2.0 中将浮点数作为参数发送?
How to send floats as paramters in Django 2.0 using path()?
我开发了一个带参数的 Python 脚本。
它具有根据接收到的参数执行不同操作的功能。
现在我试图通过 API 传递参数或参数。
我使用的是 path()
Django 2.0 的新功能(具体是我使用的版本:2.2.9)
Django 中 url 中传递浮动的方式是什么?
它适用于整数,但不适用于浮点数。
传递浮动的最佳方法是什么?例如,您是否转换为十六进制?
使用 GET 指向 API 并触发任务的示例:
不工作:
http://x.x.x.x:8000/proveedores/api/pruebascelery/buy/0/1.1287
(最后一个参数是一个浮点数)
适用于整数:
http://x.x.x.x:8000/proveedores/api/pruebascelery/buy/0/2
Django: (urls.py)
path('pruebascelery/<slug:post_id>/<slug:post_id2>/<slug:post_id3>', lanzador_task_start)
Django: (views.py)
def lanzador_task_start(request, post_id, post_id2, post_id3):
comando = "python /home/developer/venvpruebas/recibirparametros.py " + str(post_id) +str(" ")+
str(post_id2)+str(" ")+ str(post_id3)
lanzar.delay(comando)
return HttpResponse('<h1>Done</h1')
python 边:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import struct
def RecibirParametros(recibir_todo):
print("Received: ", recibir_todo)
if __name__ == "__main__":
recibir_todo = sys.argv[1], sys.argv[2], sys.argv[3]
#--------------------------------------------------------------
#[1] test1
#[2] test2
#[3] test3
#--------------------------------------------------------------
RecibirParametros(recibir_todo)
您可以使用 Path converters 自定义 url 参数。
在converts.py
class FloatUrlParameterConverter:
regex = '[0-9]+\.?[0-9]+'
def to_python(self, value):
return float(value)
def to_url(self, value):
return str(value)
在urls.py
from django.urls import path, register_converter
from . import converters, views
register_converter(converters.FloatUrlParameterConverter, 'float')
urlpatterns = [
...
path('pruebascelery/<float:post_id>/<float:post_id1>/...', views.year_archive),
...
]
替代方法:
您可以在 urls.py 中直接使用 re_path
函数中的正则表达式,如下所示:
re_path(r'^[0-9]+\.?[0-9]+$', blog_articles)
此外,您可以从 url 中检索您的参数作为查询参数。
例如 url:
http://x.x.x.x:8000/proveedores/api/pruebascelery/buy/?post_id=1.5&post_id2=2.5...
我开发了一个带参数的 Python 脚本。
它具有根据接收到的参数执行不同操作的功能。
现在我试图通过 API 传递参数或参数。
我使用的是 path()
Django 2.0 的新功能(具体是我使用的版本:2.2.9)
Django 中 url 中传递浮动的方式是什么?
它适用于整数,但不适用于浮点数。
传递浮动的最佳方法是什么?例如,您是否转换为十六进制?
使用 GET 指向 API 并触发任务的示例:
不工作: http://x.x.x.x:8000/proveedores/api/pruebascelery/buy/0/1.1287 (最后一个参数是一个浮点数)
适用于整数: http://x.x.x.x:8000/proveedores/api/pruebascelery/buy/0/2
Django: (urls.py)
path('pruebascelery/<slug:post_id>/<slug:post_id2>/<slug:post_id3>', lanzador_task_start)
Django: (views.py)
def lanzador_task_start(request, post_id, post_id2, post_id3):
comando = "python /home/developer/venvpruebas/recibirparametros.py " + str(post_id) +str(" ")+
str(post_id2)+str(" ")+ str(post_id3)
lanzar.delay(comando)
return HttpResponse('<h1>Done</h1')
python 边:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import struct
def RecibirParametros(recibir_todo):
print("Received: ", recibir_todo)
if __name__ == "__main__":
recibir_todo = sys.argv[1], sys.argv[2], sys.argv[3]
#--------------------------------------------------------------
#[1] test1
#[2] test2
#[3] test3
#--------------------------------------------------------------
RecibirParametros(recibir_todo)
您可以使用 Path converters 自定义 url 参数。
在converts.py
class FloatUrlParameterConverter:
regex = '[0-9]+\.?[0-9]+'
def to_python(self, value):
return float(value)
def to_url(self, value):
return str(value)
在urls.py
from django.urls import path, register_converter
from . import converters, views
register_converter(converters.FloatUrlParameterConverter, 'float')
urlpatterns = [
...
path('pruebascelery/<float:post_id>/<float:post_id1>/...', views.year_archive),
...
]
替代方法:
您可以在 urls.py 中直接使用 re_path
函数中的正则表达式,如下所示:
re_path(r'^[0-9]+\.?[0-9]+$', blog_articles)
此外,您可以从 url 中检索您的参数作为查询参数。 例如 url:
http://x.x.x.x:8000/proveedores/api/pruebascelery/buy/?post_id=1.5&post_id2=2.5...