如何在重定向上修复NoReverseMatch

时间:2018-12-10 20:16:34

标签: python django

我为什么得到

  

未找到与“ explorer_js”相对的内容。 'explorer_js'不是有效的   查看函数或模式名称。

何时调用下面的select视图?

def explorer_js(request):
    activities = Activity.objects.all()
    fill_column = lambda attr : [getattr(activity, attr) for activity in activities]
    d = {
        'ids' : fill_column('id'),
        'dates_added' : fill_column('date_added'),
        'numbers' : fill_column('number'),
        'athletes' : fill_column('athlete'),
        'start_dates' : fill_column('start_date'),
        'names' : fill_column('name'),
        'countries' : fill_column('country'),
        'links' : fill_column('link'),
        'segment_efforts' : fill_column('segment_efforts'),
        'distances' : fill_column('distance'),
        'average_speeds' : fill_column('average_speed')
    }

    context = {'d': d}
    return render(request, 'explorer_api/explorer_js.html', context)

def select(request):
    """Filters explorer data and sends it to explorer again"""  
    return redirect('explorer_js')

该应用的urls.py

app_name = 'explorer_api'
urlpatterns = [
    # Home page.
    path('', views.index, name='index'),
    path('explorer_js/', views.explorer_js, name='explorer_js'),
    path('select/', views.select, name='select'),
]

1 个答案:

答案 0 :(得分:0)

您需要使用app_name来引用该特定视图所在的名称空间,如下所示:

redirect('explorer_api:explorer_js')

这会告诉Django在哪里寻找视图,以便假设您在两个具有相同名称的不同应用程序中拥有两个不同的视图,例如'login',则Django可以解析您所要查看的视图指。

有关更深入的说明,请参见this answer