0
が来た場合、私はあなたがURLにアクセスするときに実行するスケジュールセロリタスクという見解持っているに基づいてビューへのアクセスを制限する:私はちょうどこれに入るの人を防ぐために希望要求は、他のビューから
class ScheduleTask(View):
def get(self, request, *args, **kwargs):
obj = get_object_or_404(ObjModel, uuid=kwargs.get('obj', None))
context = {
'site': RequestSite(request),
'secure': request.is_secure()
}
schedule_task.delay(obj.uuid, context) # schedule celery task
return redirect(reverse(
'users:user-list',
kwargs={'user': obj.user.uuid}))
をビューのURLをブラウザ(タスクをスケジュールするので)。もし私が許可されていれば、許可が拒否されました。
class CompletionView(TemplateView):
def post(self, request, *args, **kwargs):
...
if 'save_and_submit' in request.POST:
# This is the only place I would like ScheduleTask to
# run from.
return redirect(reverse('users:schedule-task',
kwargs={'obj': obj_uuid}))
私はこれをどのようにして実現できますか?何らかのトークンやクッキーを設定する必要があるような気がしますが、私は完全にはわかりません。多分ScheduleTaskビューにも必要ではない、と私はちょうど私があなたは完全にあなたがそれらのAPIの一つだけを使用してやっているものを達成することができ、あなたは、単にあなたのCompletionViewからあなたセロリのタスクを呼び出すことができますねif 'save_and_submit' in request.POST
あなたはCompletionViewでセロリのタスクを実行して、やっていることの代わりに 'users:user-list'にリダイレクトできませんか?あなたは基本的に何かを内部的にしたいのですが、なぜそれを外部に公開するのですか? – SpiXel
はい、あなたはまったく正しいと思います。まずは不必要なビューです。 – denvaar