Ссылка: How do I construct a Django reverse/url using query args?Почему моя контекстная переменная не отображается правильно?
Это в somepage.html
<a href={% query_urls from={{from}} to={{to}} %}> LOL LOSER</a>
Сначала зайдите somepage
просмотров, а затем нажав кнопку любой будет перенаправлять move
просмотров.
def move(request):
to = request.GET.get('to', 'None')
ffrom = request.GET.get('from', 'None')
#raise AssertionError(ffrom)
return render_to_response(request, "move.html", {'to': to, 'from': ffrom})
def somepage(request):
to = '../mydir'
ffrom = './heere.py'
return render_to_response(request, "somepage.html", {'to': to, 'from': ffrom})
Вместо того, чтобы получить что-то вроде http://localhost/web/move?from=./here.py&to=../mydir
Я получаю это
http://localhost/web/move?from={{from}}&to={{to}}
Те контекст вары не получил вынести на все, вероятно, потому, что пользовательский тег (применительно к somepage
просмотров) принимает все параметры в виде строки. Как заставить ее сначала отображать?
Спасибо.
** EDIT ** Маленький вопрос: Если я хочу, чтобы достичь этого
url(r"^search/<?P(cbid)\d+>/", 'views.search', name='search')
я Malformed arguments to query_urls tag
, если я ставлю это в шаблоне
<a href={% query_url 'search' 12456 from=from to=to %}> MY LINK </a>
Что общий способ написав мой собственный тег, чтобы это разрешить?
В настоящее время, это то, что я делаю ... который работает ...
def render(self, context):
view_name = self.view_name.resolve(context)
kwargs = dict([(smart_str(k, 'ascii'), v.resolve(context))
for k, v in self.kwargs.items()])
cbid = kwargs['cbid']
kwargs = sorted(kwargs.items(), key=lambda x:x[0]) # sorted and generate a list of 2-tuple
# kwargs query set now contains no cbid
kwargs = [ value for index, value in enumerate(kwargs) if value[0] != 'cbid']
#raise AssertionError(urllib.urlencode(kwargs))
return (reverse(view_name, args=[(cbid),], current_app=context.current_app)
+ '?' + urllib.urlencode(kwargs))
Я хочу, чтобы сделать его более универсальным, чтобы соответствовать любой шаблон, а не только cbid.
<a href={% query_url 'search' cbid=12456 from=from to=to %}> MY LINK </a>
Немой путь (и, возможно, единственный способ), чтобы написать что-то вроде этого в шаблоне
{% query_url 'view_func' args=[(cbid, some_text, more_text,)], from=foo to=bar %}
где арг берется буквально как список аргументов так же, как в обычной функции питона , Вероятно, это может быть eval
в список, а не буквальную строку.
Там нет необходимости для '{{}}' в шаблоне тега: вы должны просто написать '{% query_urls от = от = до%}' –
@GarethRees Спасибо. Я просто попробовал. Это не работает. Это дает мне 'from = from & to = to' – User007
А, я вижу: вы используете тег шаблона' myurl' из вопроса, с которым вы связались. Это не делает переменную оценку. Я напишу подробный ответ. –