Прежде всего, ваше регулярное выражение в шаблоне URL неверно.
r'^$/(?P<tag>\w+)'
Это говорит, чтобы соответствовать всему от
- ^ начало строки
- $ до конца строки
- имеет шаблон именованного тега, который состоит из слов и цифр после конца строки
Обычно после окончания одной строки следует другая строка или EOF, не содержащий содержимого (если только вы не используете многострочное регулярное выражение и вам здесь это не нужно).
Конец строки должен быть после тега:
r'^/(?P<tag>\w+)$'
Использование строки запроса
Строки запроса не анализируются при восстановлении URL.
Таким образом, если у вас есть 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