我有一个运行一些长期运行任务的应用程序,我正在显示用户在特定页面上进行的运行的日志(表)。页面上的表中有一个结果位置,我希望该位置成为超链接,单击该链接后,它会重定向到用户可以看到结果的页面。
我得到一个:
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
答案 0 :(得分:2)
您在(?P<task_id>[-\w]+)
中缺少问号。