2010-05-23 2 views
2

ошибок можно увидеть здесь: http://djaffry.selfip.com:8080/Джанго параметры принятия GET

Я хочу индексную страницу, чтобы принять параметры, будь то

mysite.com/search/param_here 

или

mysite.com/?search=param_here 

У меня есть это в моем URL-шаблоны, но я не могу заставить его работать. Какие-либо предложения?

urlpatterns = patterns('', 
     (r'^$/(?P<tag>\w+)', 'twingle.search.views.index'), 
    ) 

ответ

21

Прежде всего, ваше регулярное выражение в шаблоне URL неверно.

r'^$/(?P<tag>\w+)' 

Он говорит, что нужно все от

  • ^начало строки
  • $ до конца строки
  • , имеющей шаблон с именем тега, который состоит из слов и цифр после конец линии

Обычно после завершения одной строки появляется другая строка или EOF, а не контент (если вы не используете многострочное регулярное выражение, и вам здесь не нужны).

конца линии должны быть после тега:

r'^/(?P<tag>\w+)$' 

Использование строки запроса

Query strings are not parsed by url reslover.

Таким образом, если у вас есть URL в формате:

http://mysite.com/?query=param_here 

будет соответствовать:

(r'^$', 'twingle.search.views.index') 

В этом случае вы можете получить доступ к query строку в виду так:

request.GET.get('query', '') 

Без строки запроса

mysite.com/search/param_here 

будет соответствовать:

(r'^search/(?P<query>\w+)$', 'twingle.search.views.index'), 

Где все, что соответствует \w (вы должны изменить это в соответствии со своими потребностями), будет передано вместе с запросом на функцию индексации в виде аргумента с именем query.

Оба

Вы можете использовать как шаблоны URL, как так:

urlpatterns = patterns('twingle.search.views', 
    url(r'^$', 'index'), 
    url(r'^search/(?P<query>\w+)$', 'index'), 
) 

В этом примере вид будет выглядеть примерно так:

def index(request, query=None) 
    if not query: 
     query = request.GET.get('query', '') 
    # do stuff with `query` string 
+0

Я получаю сообщение об ошибке с помощью 'url (r '^ search/(? P \ w +) $', 'index')', недопустимый синтаксис (urls.py, строка 9) любая идея почему? – tipu

+0

Если вы копируете/вставляете мой последний пример кода urlpatterns с обоими шаблонами, кажется, я забыл запятую после первого шаблона url. Я исправил ти сейчас. –

+0

Я также отредактировал urlpatterns (переименован в «» на ''), чтобы упростить его использование и добавить пример представления. –

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