2017-02-08 12 views
0

から一致する値は、現在、私のurls.pyに私のようなものがあります:ジャンゴURL - リスト/タプル

url(r'^(?P<my_var>:|var1|var2|var3|other_string)/rest_of_url' 

をそれは私が変数のリスト/タプルを持っていると思い
/var1/rest_of_url var2/rest_of_url var3/rest_of_url other_string/rest_of_url
に一致します。

VARIABLES = ('var1', 'var2', 'var3') 

私のURLに一致する変数を格納する可能性があります。
しかし私はそれを行うことができる任意のdjango正規表現を知りません。あなたはタプルに'|'.joinを行い、パターンにそれを追加することができます

url(r'^(?P<my_var>:regex_matching_any_of_VARIABLES|other_string)/rest_of_url' 
+1

my_varが表示されていることを確認し、my_varが受け入れられたvarsのリストにない場合は、おそらく404を返すほうがよいでしょう。 –

答えて

1

pattern = r'^(?P<my_var>:|' + '|'.join(VARIABLES) + r'|other_string)/rest_of_url' 
url(pattern, ...) 
1

次の2つのURLパターンを試してみることができます正確には、私の目標は、のようなものを持っていることです。少し冗長ですが。 まず、変数と一致させてから汎用パターンと一致させようとします。

VALID_VALUES = '|'.join(["var1","var2","var3"]) 
urlpatterns = patterns('', 
    url(r'^(?P<var_type>(%s))/rest_of_url/$' % VALID_VALUES, 
          'your_view'), 
    url(r'^(?P<var_type>[\w\d-]+)/rest_of_url/$', 
         'your_view') 

)