【问题标题】:Django: Url can't be resolvedDjango:无法解析网址
【发布时间】:2017-07-20 08:02:08
【问题描述】:

我制作了一个包含培训师列表的应用程序。我的索引视图 显示数据库中的这些培训师资料。我打算实现一个搜索栏来过滤这些结果。我没有得到我做错了什么。一旦我提到搜索中的 url,它就会显示反向匹配错误

网址的.py:

       #/trainer/
url(r'^$', views.IndexView.as_view(),name='index'),

#/trainer/<trainer_id>/
url(r'^(?P<pk>[0-9]+)/$',views.DetailView.as_view(),name='details'),

#/trainer/trainer/add
url(r'trainer/add/$', views.TrainerCreate.as_view(), name='Trainer-add'),

#/trainer/trainer/<album_id>
url(r'trainer/(?P<pk>[0-9]+)/$', views.TrainerUpdate.as_view(), name='Trainer-update'),

#/trainer/trainer/add
url(r'trainer/(?P<pk>[0-9]+)/delete/$', views.TrainerDelete.as_view(), name='Trainer-delete'),


url(r'^search/$', views.search, name='Search'),

views.py

def search(request):
    query = request.GET['q']
    trainer= Trainer.objects.filter(name__icontains=query)
    return render(request,'trainer/index.html', {'trainer': trainer})

在我的基本模板中搜​​索表单

    <form class="navbar-form navbar-left" method="get" action="{% url 'trainer:Search' %}">
            <div class="form-group">
                <input type="text" id="searchBox" class="input-medium search-query" name="q" placeholder="Search">
            </div>
            <button type="submit" class="btn btn-default">Search</button>
    </form>

index.py

    <table style="width:100%" class="table table-hover">
                            <tr>
                                <th>#</th>
                                <th>Name</th>
                                <th>Technology</th>
                                <th>Location</th>
                            </tr>
                            {% for trainer in all_trainers %}
                                <tr>
                                    <td><input type="checkbox" id="trainer{{ forloop.counter }}" name="trainer" value="{{ trainer.id }}"></td>
                                    <td> <a href="{% url 'trainer:details' trainer.id %}"> {{ trainer.name }}</td>
                                    <td>{{ trainer.technology }}</td></a>

                                    <!-- View Details -->
                                    <td><a href="{% url 'trainer:details' trainer.id %}" class="btn btn-primary btn-sm">View Details</a></td>

                                    <td><a href="../media/{{ trainer.trainer_profile }}" class="btn">Download PDF</a></td>

                                    <!-- Delete Album -->
                                    <td>
                                        <form action="{% url 'trainer:Trainer-delete' trainer.id %}" method="post">
                                        {% csrf_token %}
                                        <input type="hidden" name="trainer_id" value="{{ trainer.id }}" />
                                        <button type="submit" class="btn btn-default btn-sm">
                                            <span class="glyphicon glyphicon-trash"></span>
                                        </button>
                                        </form>
                                    </td>
                                </tr>
                            {% endfor %}
                        </table>

【问题讨论】:

  • 您的问题不在于“搜索不起作用”,而是您的网址未解析。你应该编辑你的帖子标题...
  • 好的..你有解决方案吗?

标签: python django search


【解决方案1】:

你需要{% url 'Search' %} 而不是{% url 'trainer:Search' %}: 用于当您拥有 namespaced your urls 时。

【讨论】:

  • 试过这个。仍然显示此错误:NoReverseMatch at /trainer/
  • 你重启服务器了吗?您能否在您的问题中发布完整、完整的错误消息?
  • 是的,我确实重新启动了。不工作:异常值:没有找到带有参数“()”和关键字参数“{}”的“搜索”的反向。尝试了 0 个模式:[]
  • 编辑问题并发布完整的urls.py
  • edit your question 并添加到那里,以便我可以正确阅读。
【解决方案2】:

改变这一行

<form class="navbar-form navbar-left" method="get" action="{% url 'trainer:Search' %}">

<form class="navbar-form navbar-left" method="get" action="{% url 'Search' %}">

【讨论】:

  • 试过这个。仍然显示此错误:NoReverseMatch at /trainer/
  • 发布您用于 /trainer/ url 的模板
  • 发布您的 IndexView 模板以及视图代码
  • 将其添加到问题中,而不是在评论中
  • 谢谢。它没有正确搜索,但至少显示了 url。不适用于搜索错误现在的位置!
【解决方案3】:

您是否在某处包含 urls.py?

否则,您需要在正则表达式的开头添加插入符号 ^。

url(r'^trainer/search/$', views.search, name='Search'),

【讨论】:

  • 是的,显然我将它包含在主 url 中。其余一切正常。
猜你喜欢
  • 2013-05-02
  • 2019-09-12
  • 2014-08-04
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 2020-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多