向现有项目添加其他模板会出错

时间:2018-02-27 17:35:48

标签: django

我上周发布了一些内容,但我还没有得到答案。我使用以下github项目来使用过滤器。我无法使用任何其他模板。

https://github.com/sibtc/simple-django-filter

当我尝试向项目或视图添加新模板时,在尝试导航到搜索时出现以下错误,因为该模板引用了一个名为results的新页面,其中过滤器的结果将具有POST发生:

django.urls.exceptions.NoReverseMatch: Reverse for 'results' not found. 'results' is not a valid view function or patter
n name.

尝试使用以下内容为结果视图添加网址时,我仍然会收到上述错误:

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

我也包括来自。在urls.py中导入视图

我为结果添加了一个空视图:

def results(request):


    return render(request, 'results.html', args)

我认为必须对如何设置简单过滤器应用的目录结构以及我是如何做事做点什么。

我也在下面添加了项目网址:

from django.conf.urls import url, include
from django.contrib import admin
from django.views.generic import TemplateView
from django_filters.views import FilterView
from mysite.search.filters import UserFilter

urlpatterns = [
    url(r'^$', TemplateView.as_view(template_name='home.html'), name='home'),
    url(r'^search/$', FilterView.as_view(filterset_class=UserFilter, template_name='search/user_list.html'), name='search'),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^results/', include('app_name.urls')),

]

这是应用程序urls.py

  from django.conf.urls import url, include
from django.contrib import admin
from django.views.generic import TemplateView
from django_filters.views import FilterView
from mysite.search.filters import UserFilter
from . import views



app_name = 'search'

urlpatterns = [
    url(r'^results/$', views.results, name='results'),
]

添加已安装的应用:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'mysite',
    'mysite.search',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'widget_tweaks',
]

添加了目录结构:

enter image description here

1 个答案:

答案 0 :(得分:1)

您需要在项目的网址中包含您的应用程序网址。

urlpatterns = [
    url(r'^$', TemplateView.as_view(template_name='home.html'), name='home'),
    url(r'^search/$', FilterView.as_view(filterset_class=UserFilter, template_name='search/user_list.html'), name='search'),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^myapp/', include('myapp.urls'),
]

您还应该从应用的网址中删除admin之类的网址,否则它们将在/admin//myapp/admin/上提供。

app_name = 'myapp'

urlpatterns = [
    url(r'^results/$', views.results, name='results'),
]

建议(但不是必须)在应用程序的app_name中设置urls.py。如果您这样做,那么在撤消网址时您将不得不使用它,例如'myapp:results'代替'results'