Django render()-找不到“”的反向符号。 ''不是有效的视图函数或模式名称

时间:2019-06-18 13:32:56

标签: python django

这是另一个涉及Django中路径的问题。我无法在任何地方找到我的答案,并且对此进行了大量搜索。

我认为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)

当我在搜索栏上按下Enter键时,它将进入正确的视图函数并执行所有必要的计算,但是在render()函数上失败。我在浏览器中拥有的网址是:http://localhost:8000/siren-search/search/?query=jobsite9

这是我的追溯链接:http://dpaste.com/2KFAW9M#

2 个答案:

答案 0 :(得分:0)

真的只值得评论,但我不能在此处格式化。

在您链接到的回溯中,

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.

对我来说,这表明您可能在错误的位置查看,实际上,问题可能甚至出在您编写的代码中。查看base.html的第37行,看看它是否取决于上下文中尚未传递的内容。或尝试暂时暂存base.html。

但是我很困惑,因为所发布的siren_search.html并不表明它正在扩展任何基本模板。

答案 1 :(得分:0)

尝试在模板中提供这样的语法

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

这可能有效