Прежде всего, ваше регулярное выражение в шаблоне 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
Я получаю сообщение об ошибке с помощью 'url (r '^ search/(? P \ w +) $', 'index')', недопустимый синтаксис (urls.py, строка 9) любая идея почему? – tipu
Если вы копируете/вставляете мой последний пример кода urlpatterns с обоими шаблонами, кажется, я забыл запятую после первого шаблона url. Я исправил ти сейчас. –
Я также отредактировал urlpatterns (переименован в «» на ''), чтобы упростить его использование и добавить пример представления. –