0
セロリタスクでフォームを処理していて、HttpResponseRedirectの後にレンダリングすることができます。Celeryタスクを使用したDjangoビュー:2つのパラメータを使用したレンダー詳細ページ
ここに私のviews.py中:
from django_celery_results.models import TaskResult
from .forms import SampleForm
from .models import Sample
from analysis.tasks import process_sample_input
def sample_submit(request):
if request.method == "POST":
form = SampleForm(request.POST or None, request.FILES or None)
if form.is_valid():
#form = form.cleaned_data
instance = form.save()
task = process_sample_input.delay(instance.id)
try:
task_result = TaskResult(task_id = task.id)
task_result.save()
return HttpResponseRedirect(reverse("sample:results_detail", kwargs={"id":instance.id, "task_id":task.id}))
except Exception as e:
raise e
#return results_detail(request, instance.id, task.id) #show the results details
else:
print form.errors
return not_processed(request)
else:
form = SampleForm()
context = {
"form": form,
}
return render(request, "analysis/sample_form.html", context)
私の問題は、私は結果一覧ページからresults_detailによってレンダリングされたHTMLにアクセスする方法です。私は他の場所から私のセロリのタスクのIDにアクセスできる方法がわからない、私のviews.py内のビューsample_submit()
:で私のresults_list.html
{% block content %}
<table>
<thead>
<tr>
<th>Name [Local File or URL]</th>
</tr>
</thead>
{% for sample in all_samples %}
<td><a href='/sample/results/{{sample.id}}/'>{{ sample.get_sample_name }}</a></td>
{% endfor %}
</table>
{% endblock %}
で
def results_list(request):
all_samples = Sample.objects.all()
context = {'all_samples': all_samples}
return render(request, "analysis/results_list.html", context)
myappに/分析/ urls.py:
url(r'^results/(?P<id>[0-9]+)/$', views.results_detail, name="results_detail"),
urls.py
でここ
やテンプレート、私はC言語1つのパラメータのみを渡します。方法がある場合、セロリのtaskresult id(自動生成)をビューに渡すにはどうすればよいですか?どんな助けやアイデア?