2009-07-14 12 views
5

मैं एक Django यूआरएल पैटर्न में दशमलव बिंदु के साथ एक संख्या का उपयोग करना चाहता हूं, लेकिन मुझे यकीन नहीं है कि यह वास्तव में संभव है (मैं एक regex विशेषज्ञ नहीं हूँ)।मैं एक Django यूआरएल पैटर्न में एक दशमलव संख्या का उपयोग कैसे करूं?

यहाँ मैं यूआरएल के लिए उपयोग करना चाहते हैं क्या है:

/item/value/0.01 
/item/value/0.05 

उन URL को $ 0.01 या $ 0.05 मूल्य आइटम दिखा सकती है। निश्चित रूप से, मैं आसान तरीका निकाल सकता हूं और मूल्य को सेंट में पास कर सकता हूं, इसलिए यह/item/value/1 होगा, लेकिन मैं एक पूर्णांक के बजाय दशमलव डेटा प्रकार के रूप में अपने विचार में तर्क प्राप्त करना चाहता हूं (और मुझे किसी बिंदु पर एक प्रतिशत के अंशों से निपटना पड़ सकता है)। क्या एक Django यूआरएल पैटर्न में एक रेगेक्स लिखना संभव है जो इसे संभालेगा? जैसे

urlpatterns = patterns('', 
    (r'^item/value/(?P<value>\d+\.\d{2})/$', 'myapp.views.byvalue'), 
    ... more urls 
) 

यूआरएल कुछ स्लैश के साथ शुरू नहीं करना चाहिए

r"^/item/value/(\d+\.\d+)$" 

उत्तर

13

यह हो सकता है:

+0

कृपया एक नंगे 'को छोड़कर' का उपयोग न करें: क्योंकि यह हर एक त्रुटि खाएगा, अक्सर बग छुपाएगा। आप शायद 'ValueError'' ('ValueError को छोड़कर: ' –

13

मैं विशेष रूप से Django के बारे में पता नहीं है, लेकिन इस URL से मेल खाना चाहिए।

विचारों आप कार्य हो सकता है में:

def byvalue(request,value='0.99'): 
    try: 
     value = float(value) 
    except: 
     ... 
+6

आप करना चाहते हैं * एक * यूआरएल में इनट्स और फ्लोट्स, इस तरह कुछ लिखें: 'r" ^/item/value/(\ d + (?: \। \ d +)) $ "' – Boldewyn

+0

+1 अधिक सामान्य उत्तर के लिए (सीमित नहीं है दशमलव के बाद दो अंकों के साथ संख्या) – btk

+0

@ बोल्डविन यूआर समाधान काम नहीं करता है। न तो इट्स के लिए और न ही तैरने के लिए ... मैंने इसका इस्तेमाल करने की कोशिश की लेकिन –

3

मूल्यों केवल $ 0.01 या $ 0.05, harto का पैटर्न इस तरह निर्दिष्ट किया जा सकता कर रहे हैं स्वीकार करने के लिए हैं:

r"^/item/value/(\d\.\d{2})$" 
+0

को पकड़ना चाहते हैं, धन्यवाद, प्रत्येक पोस्ट ने पहेली का एक छोटा टुकड़ा जोड़ा। Evgeny जादू बुलेट था। –

संबंधित मुद्दे