python - Django:如何将请求对象从一个视图传递到另一个视图?
问题描述
有没有办法将request
对象从一个视图传递到另一个视图?还是我必须将请求分解成单独的部分或使用request.__dict__
并传递这些部分?
当前,由于请求无法序列化,代码如下:
def explorer(request):
collect_activities_init(request)
return render(request, 'explorer/explorer.html')
def collect_activities_init(request):
task = collect_activities.delay(request)
return JsonResponse({'status_url': reverse('explorer:collect_activities_status', kwargs={'task_id': task.id})})
@celery.task(bind=True)
def collect_activities(self, request):
api = StravaApi()
code = request.GET.get('code', '') # extract code from redirect URL query string
会给:
WSGIRequest: GET '/explorer/?state=&code=3ba4hgh5ad99ea3cf8e52d8&scope='> 不是 JSON 可序列化的
但是我需要在最后一个函数中获取第一个函数的请求数据,因为它的代码从请求中提取了一些数据。
解决方案
我发现了这个:Django pass object from view to next for processing
最佳答案使用会话来传递保存对象并稍后检索它:
def first_view(request):
my_thing = {'foo' : 'bar'}
request.session['my_thing'] = my_thing
return render(request, 'some_template.html')
def second_view(request):
my_thing = request.session.get('my_thing', None)
return render(request, 'some_other_template.html', {'my_thing' : my_thing})
推荐阅读
- ios - iOS(dbm)中的信号强度?
- yii2 - Yii2如何在Html activeInput上分配小部件
- python - 如何在多个模块中使用 logging.getLogger(__name__)
- c++ - 仅锁定两个可能的互斥锁之一
- scala - 如何从 Spark 数据框中的所有列中删除反斜杠?
- python - 在二维 python 列表中搜索特定列中的最后一次出现
- php - 查询在 MYSql QUERY php 中不起作用
- c# - FreeShape 的编辑点 - 减少路径
- python-3.x - 将一行拆分为多行pyspark
- java - 如何使用 geoTools api 读取 MID/MIF 文件