Перенаправление с дополнительными аргументами после функции сценария
У меня есть сайт на Django с шаблонами Jinja2, где мне нужно создать форму, которая принимает переменную username и возвращает идентификатор пользователя на той же странице.
Для этого у меня есть как стандартный viewbase, так и функция в моем views.py. Функция принимает POST-запрос от HTML-формы на странице 'List', преобразует его в ID с помощью скрипта python, хранящегося в приложении, а затем перенаправляет обратно на главную страницу, которая имеет оператор 'if' для отображения текста
Я не могу просто вывести 'list.html', поскольку дополнительный контекст в исходном представлении создает список.
Проблема в том, что как бы я ни пытался, я не могу получить данные обратно на главной странице.
Моя последняя ошибка (игнорируйте мои тестовые значения, пожалуйста):
NoReverseMatch("Reverse for 'list' with keyword arguments '{'username': 'asdfa', 'ID': 'hi'}' not found. 1 pattern(s) tried: ['/list/$']",)
Моей конечной целью является превращение секции '{% if 'username'} в модальную, но пока я не смогу подтвердить, что данные обрабатываются, я полагаю, мне не стоит даже думать об этом.
Вот код:
views.py
class ListView(TelegramViewBase):
template_name = "telegram/list.html"
@method_decorator(login_required)
@method_decorator(permission_required("sig.telegram.view", raise_exception=True))
def dispatch(self, request, *args, **kwargs):
return super().dispatch(request, *args, **kwargs)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
self.request.js_storage.update(
entry_table_columns=EntryTable.get_columns(self.request.user),
)
table_mode = self.request.GET.get("table_mode", conf.TABLE_MODE_ENTRIES)
if table_mode not in dict(conf.TABLE_MODE_CHOICES):
table_mode = conf.TABLE_MODE_ENTRIES
context.update(
filters=utils.get_filters(self.request, table_mode),
table=utils.get_table(self.request, table_mode),
table_mode=table_mode,
table_mode_title=utils.get_table_mode_display(table_mode),
table_choices=conf.TABLE_MODE_CHOICES,
)
return context
def search_user(request):
if request.method == 'POST':
username = request.POST.get('username')
user_id = convert(username)
context = {'username' : username, 'ID': user_id}
return HttpResponseRedirect(reverse('list', kwargs = context))
return render(request, 'list.html', context)
list.html (просто показывает раздел формы)
<form action={% url 'search_user' %}" method='post'>
<input typ"hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
<label for="username"> Name Converter:</label>
<input id="username" type="text" name="username">
<input type="submit" value="submit">
</form>
{% if username %}
{{ username }}, {{ user_id }}
{% endif %}
Спасибо!
В качестве случайной второй просьбы, если кто-нибудь знает учебник по модалам, где результаты показываются в модале, а не в форме, я был бы чрезвычайно благодарен. Пока поиски ни к чему не привели, а модалы в форме трудно перевести для новичка.