Принудительно сопоставлять параметры запроса в urls.py - PullRequest
1 голос
/ 05 июня 2009

Я хочу, чтобы ВСЕ сценарий после косой черты передавался сценарию. Если я сделаю:

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 ]

3 голосов
/ 05 июня 2009

Внутри вашего представления вы можете получить URL, включая строку запроса с request.get_full_path().

Также есть request.build_absolute_uri(), если вы хотите включить http://servername.com деталь.

1 голос
/ 05 июня 2009

Нет, это невозможно. Параметры GET не передаются в urls.py.

Интересно, зачем тебе это делать? Почему так много ваших представлений зависят от строк запросов GET? Почему бы вам не использовать способ работы Django, который состоит в том, чтобы сделать параметры частью самого URL, а не в виде строк запроса.

...