Django 在使用 url 调度程序时没有反向匹配错误



我有一个运行一些长时间运行任务的应用程序,我正在显示用户在特定页面上进行的运行日志(表格(。页面上的表格中有一个结果位置,我希望它是一个超链接,单击后,会被重定向到用户可以查看结果的页面。

我收到一个:

NoReverseMatch: Reverse for 'past_run_results' with arguments '(u'1649103c-67d0-47f9-a085-401c02acff6a',)' not found. 1 pattern(s) tried: ['discovery-engine/past-runs/(P<task_id>[-\w]+)$']

我无法弄清楚出了什么问题

/urls.py

[
url(r'^past-runs/$', views.past_run_log, name="previous_runs"),
url(r'^past-runs/(P<task_id>[-w]+)$', views.past_run_results, name="past_run_results"),
]

/views.py

def past_run_log(request):
past_fifty_runs = JobLog.objects.all().filter(user=request.user)[:50]
context_dict = {"past_runs": past_fifty_runs}
return render(request, 'website/previous_runs.html', context=context_dict)

def past_run_results(request, task_id):
get_result = JobLog.objects.get(task_id=task_id)
read_location = os.path.join(os.getcwd(), "results", get_result.result_location)
with open(read_location) as f:
result_data = json.load(f)
if result_data:
return render(request, 'website/previous_runs_results.html', context={"result": result_data})
else:
return render(request, 'website/previous_runs_results.html', context={"result": "No result found."})

/previous_runs.html

<div class="container-fluid">
<div class="row">
<div class="col-xs-12">
<h1>History</h1>
<table data-toggle="table" data-search="true" data-pagination="true" class="table-responsive">
<thead>
<tr>
<th>Task Name</th>
<th>Username</th>
<th>Algortihm Name</th>
<th>Start Time</th>
<th>Duration (secs)</th>
<th>Status</th>
<th>Result</th>
</tr>
</thead>
<tbody>
{% for run in past_runs %}
<tr>
<td>{{run.task_name}}</td>
<td>{{run.user}}</td>
<td>{{run.algorithm}}</td>
<td>{{run.time_started}}</td>
<td>{{run.time_taken | floatformat:2}}</td>
<td>{{run.status}}</td>
<td><a href="{% url 'past_run_results' run.task_id %}">{{run.result_location}}</a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>

task_id是唯一的键,例如1649103c-67d0-47f9-a085-401c02acff6a。 Django版本是1.11的,python版本是2.7

您在(?P<task_id>[-w]+)中缺少问号。

最新更新