2009-06-05 2 views
1

Я хочу, чтобы URL WHOLE после косой черты передавался скрипту. Если я это сделаю:Параметры принудительного запроса, которые должны быть сопоставлены в urls.py

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, чтобы соответствовать всем, включая строку запроса?

ответ

1

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

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

+0

Мои URL-адреса выглядят так: 'http: //example.com/alias/http: // stackoverflow.com/users/90025/paul-tarjan'. То есть, кто-то еще пишет в своем URL-адресе в конце моей. Часто в опубликованном URL-адресе есть шаблоны запросов, которые я хочу захватить как часть «псевдонима». –

3

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

Существует также request.build_absolute_uri(), если вы хотите включить в комплект http://servername.com.

 Смежные вопросы

  • Нет связанных вопросов^_^