Django render () - обратный для '' не найден.'' не является допустимой функцией просмотра или именем шаблона - PullRequest
0 голосов
/ 18 июня 2019

Это еще один вопрос, касающийся путей в Джанго. Я нигде не смог найти свой ответ и провел много поисков по этому вопросу.

Функция return(), на мой взгляд, выдает ошибку

django.urls.exceptions.NoReverseMatch: обратное значение для '' не найдено. '' не является допустимой функцией просмотра или именем шаблона.

Вот мой код.

<!-- siren_search.html -->
    <div class="row">
        <div class="col-sm-8 col-md-7 col-xl-5 mx-auto">
            <form id="searchform" action="{% url 'search' %}" method="GET">
                <input id="searchbar" name="query" autocomplete="on" onkeyup=getCameras(this.value)
                    placeholder="Search for the name of a jobsite." class="form-control" type="search" />
            </form>
        </div>
    </div>
#### urls.py

from django.urls import path, re_path
from . import views

urlpatterns = [
    path('', views.siren_home, name = 'siren_home'),
    re_path(r'^search/$',views.search, name = 'search')
]

#### views.py

from django.shortcuts import render
from django.http import HttpResponse, JsonResponse
from django.core.exceptions import ObjectDoesNotExist
from .models import CameraSystem, CameraModel, ControlByWeb, JobSite
from django.core import serializers
import json

def siren_home(request):

    # some functionality

    return render(request, 'siren_search.html', context)

def search(request):

    term = request.GET.get('query')
    context = {}

    # Handle when the user presses enter on the search bar
    if 'query' in request.GET and term != '' and not request.is_ajax():
        try:
            jobsite = JobSite.objects.get(name__iexact = term)
            cameras = jobsite.camerasystem_set.all()
            context = {
                'cameras': cameras,
            }

        except ObjectDoesNotExist:
            pass

        return render(request, 'siren_search.html', context) # Django fails here
    else:
        return render(request, 'siren_search.html', context)

Когда я нажимаю клавишу ввода в строке поиска, она направляется к правильной функции просмотра и выполняет все необходимые вычисления, но в функции render () происходит сбой. URL моего браузера: http://localhost:8000/siren-search/search/?query=jobsite9.

Вот ссылка на мою трассировку: http://dpaste.com/2KFAW9M#

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

попробуйте указать такой синтаксис в шаблонах

             **"{% url 'appname:search' %}"**

это может сработать

0 голосов
/ 18 июня 2019

Действительно заслуживает только комментарий, но я не могу отформатировать его там.

В трассировке, на которую вы ссылаетесь,

Template error:
In template /Users/name/Programming/test/webapp/webapp/templates/base.html, error at line 37
   Reverse for '' not found. '' is not a valid view function or pattern name.

, который подсказывает мне, что вы, возможно, ищете не в том месте, и действительно, проблема может даже не быть в написанном вами коде. Посмотрите на строку 37 из base.html и посмотрите, зависит ли это от чего-то, что вы не передали в своем контексте. Или попробуйте заглушить base.html сейчас.

Хотя я озадачен, потому что опубликованный siren_search.html не показывает, что он расширяет какой-либо базовый шаблон.

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