强制查询参数在urls.py中匹配

时间:2009-06-05 09:45:47

标签: django django-urls

我希望将斜杠后的WHOLE URL传递给脚本。如果我这样做:

url(r'^(?P<id>.*)$', alias.get, name="alias"),

然后我只获取路径组件而不是传递给我的函数的查询参数。然后我必须:

def urlencode(dict) :
    if len(dict) == 0 : return ""
    params = {}
    for k, v in dict.items() :
        params[k] = v.encode('utf-8')

    return "?" + urllib.urlencode(params)

def get(id) :
    id += urlencode(request.GET)

我这样做是为了我的很多观点,我一直忘记它并制造错误。有没有办法告诉我的urls.py匹配包括查询字符串在内的所有内容?

2 个答案:

答案 0 :(得分:3)

在您的视图中,您可以获取包含request.get_full_path()的查询字符串的网址。

如果您想要加入http://servername.com部分,还有request.build_absolute_uri()

答案 1 :(得分:1)

不,没有办法做到这一点。 GET参数不会传递给urls.py。

我想知道为什么你需要这样做。为什么你的很多观点都依赖于GET查询字符串?为什么不使用Django的做事方式,即将参数作为URL本身的一部分,而不是作为查询字符串。