Django url - 匹配list / tuple中的值

时间:2017-02-08 11:23:49

标签: python regex django

目前在我的urls.py中有类似的内容:

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

匹配
url(r'^(?P<my_var>:regex_matching_any_of_VARIABLES|other_string)/rest_of_url'
我想有一个变量列表/元组:

<?php
session_start();
if(isset($_SESSION['username']) && $_SESSION['username'] != ''){
    echo "true";
}
else {
    echo "false";
}
?>

这可以存储可以在我的网址中匹配的变量 但是我不知道任何可以做到这一点的django正则表达式。确切地说,我的目标是拥有类似的东西:

<script>
    function gettatus(){
        $.get("sessioncheck.php", function(data){
            if(!data) {
                window.location = "logout.php";
            }
            setTimeout(function(){
                checkLoginStatus();
            }, 3000);
        });
    }
    $(document).ready(function(){
        gettatus();
    });
</script>

2 个答案:

答案 0 :(得分:1)

您可以在元组上执行'|'.join并将其添加到模式中:

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

答案 1 :(得分:1)

您可以试用两种网址模式。尽管有点冗长。 首先,它尝试匹配您的变量,然后匹配通用模式。

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')

)