Нет обратного совпадения в Django при передаче аргумента запроса - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь передать аргумент запроса в Django представление через URL, например:
127.0.0.1:8000/vysledky/?a_id=1

Однако, когда я пытаюсь go на этот URL, он выдает ошибку NoReverseMatch . Полный отчет об ошибках приведен ниже:

Request Method: GET
Request URL: http://127.0.0.1:8000/vysledky/?a_id=1

Django Version: 3.0.5
Python Version: 3.8.0
Installed Applications:
['analysis.apps.AnalysisConfig',
 'users.apps.UsersConfig',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']


Template error:
In template /Users/vojtamazur/Documents/CS_IA/mysite/analysis/templates/analysis/base.html, error at line 0
   Reverse for '' not found. '' is not a valid view function or pattern name.
   1 : <!DOCTYPE html>
   2 : <html>
   3 : <head>
   4 :     {% if title %}
   5 :         <title> Analýza - {{ title }} </title>
   6 :     {% else %}
   7 :         <title> Analýza </title>
   8 :     {% endif %}
   9 : </head>
   10 : <body>


Traceback (most recent call last):
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/views/generic/base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/utils/decorators.py", line 43, in _wrapper
    return bound_method(*args, **kwargs)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/Users/vojtamazur/Documents/CS_IA/mysite/analysis/views.py", line 167, in dispatch
    return super().dispatch(*args, **kwargs)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/views/generic/base.py", line 97, in dispatch
    return handler(request, *args, **kwargs)
  File "/Users/vojtamazur/Documents/CS_IA/mysite/analysis/views.py", line 178, in get
    return render(request, self.template_name, context)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/shortcuts.py", line 19, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/template/loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/template/base.py", line 171, in render
    return self._render(context)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/template/base.py", line 163, in _render
    return self.nodelist.render(context)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/template/base.py", line 163, in _render
    return self.nodelist.render(context)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/template/defaulttags.py", line 309, in render
    return nodelist.render(context)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/template/defaulttags.py", line 443, in render
    url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/urls/base.py", line 87, in reverse
    return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
  File "/Users/vojtamazur/Documents/CS_IA/env/lib/python3.8/site-packages/django/urls/resolvers.py", line 677, in _reverse_with_prefix
    raise NoReverseMatch(msg)

Exception Type: NoReverseMatch at /vysledky/
Exception Value: Reverse for '' not found. '' is not a valid view function or pattern name.

Вот код для моего представления:

class ResultsView(View):
    template_name = "analysis/results.html"

    def get(self, request):
        analysis_id = request.GET.get('a_id')
        analysis = Analysis.objects.get(pk=analysis_id)
        clients = analysis.client_set.all()
        context = {
            'analysis':analysis,
            'clients':clients,
        }
        return render(request, self.template_name, context)

Это гиперссылка, которую я использовал на другой странице проекта для ссылки на эту страницу:
<a href="{% url 'results' %}{{ a.id }}/">{{ a.title }} - {{ a.date }}</a> По какой-то причине эта установка работала нормально, когда я впервые ее проверил, но при последующем тестировании она каждый раз выдавала эту ошибку. Единственное изменение, которое я сделал со времени первого теста, - это добавить другое представление и добавить ссылку на него в шаблон представления, который начал давать ошибки.

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Я нашел решение. Проблема была в шаблоне "results. html". Была гиперссылка, которая ссылалась на неправильно введенное имя пути (), что, вероятно, вызвало ошибку во время рендеринга шаблона. Когда я правильно написала имя, оно работало нормально.

0 голосов
/ 11 апреля 2020

Reverse for '' not found сообщает, что вы задаете пустую строку '' в качестве URL, и она не найдена в вашем urls.py.

Возможно a.id - пустая строка. Вы можете «напечатать» {{a.id}}, чтобы увидеть значение, которое вы передали в контекст

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...