我有一个django系统,用于在制冷系统上建立模板。你知道吗
我有一个模型叫做系统。你知道吗
我有很多代表表格的模型,很多模型有:
这是zip视图中的get方法:
def get(self, request, *args, **kwargs):
print('# AnlageZip GET NEU ###################################################################################################')
self.pk=self.kwargs.get('pk')
self.template_name = "stammdat/Anlage/info.html"
self.user=self.request.user
#
host=self.request.get_host()
try :
an=Anlage.objects.filter(user=self.request.user).get(pk=self.pk)
except ObjectDoesNotExist :
an=None
#
tfile=BytesIO()
zf = zipfile.ZipFile( tfile, "w" )
# Leere Liste erzeugen
AnlageFiles=[]
#
seq=1
x={}
x['Filename'] = '{:02d}_{}.pdf'.format(seq,an.CLASSNAME)
x['pdf_url'] = 'http://'+host+an.get_pdf_url()
x['data'] = urllib.request.urlopen( x['pdf_url'] )
#x['data1'] =
AnlageFiles.append(x)
print(x['Filename'],x['pdf_url'])
zf.writestr( x['Filename'],x['data'].read())
seq+=1
# Jetzt Dokumentation suchen
# Alle diese modelle benötigen einen foreign Key zu Anlage namens anlage
#
DokuModels = [KurzBetrAnleitA1, KurzBetrAnleitA3, KurzBetrAnleitNH3, UebernahmeUebergabeKurz,UebernahmeUebergabe,
SichDruckBegrenz,DruckFestPruef,AbnahmPruefDruckbeh,WiederPruefDruckbeh,AbnahmPruefRohr,WiederPruefRohr,
PruefListSicht,PruefBeschWK8901,Wartungsvertrag,Einbauerklaerung,
EGKonformErkl,Instandhaltungsvertrag,RisikoBeurteilung]
#
for doku in DokuModels :
docs=doku.objects.filter(anlage=an)
if len(docs) > 0 :
for item in docs :
x={}
x['Filename'] = '{:02d}_{}.pdf'.format(seq,item.CLASSNAME)
x['pdf_url'] = 'http://'+host+item.get_pdf_url()
x['data'] = urllib.request.urlopen( x['pdf_url'] )
AnlageFiles.append(x)
zf.writestr( x['Filename'],x['data'].read())
seq+=1
zf.close()
#
response = HttpResponse(content_type='application/x-zip-compressed')
response['Content-Disposition'] = 'attachment; filename="Anlage_{}.zip'.format(self.pk)
response.write(tfile.getvalue())
tfile.close()
return response
有一个叫做SytemOverView的视图 它检查所有型号的系统是否有外键 如果他们有一个, 它调用get\u pdf\u url方法 并为列表创建上下文 你可以点击网址,并得到pdf(多达54)的看法,工作正常
现在我创建了一个ZIP视图来一次性下载所有的pdf 但是我的zip中的pdf文件只包含登录页面的html代码 因为请求查询未被授权。你知道吗
如何重用django会话以启动系统zip视图 所有pdf的请求?你知道吗
正如我在评论中所说,您正在对自己的网站进行外部调用,您应该调用pdf视图直接传递请求对象以保留会话,如下所示,但是修改请求对象以构建不同的pdf似乎有点困难
我建议如下重构pdf函数:
使用连接的客户端的会话和简单的javascript函数来收集文件。你知道吗
在django视图的模板中,我创建了一个脚本,从页面收集所有pdf文件,并从中构建一个zip文件。你知道吗
在视图中,我刚刚添加了一个上下文列表变量Doku,其中包含要处理的单个和uniq变量名的dict。这避免了异步头痛。你知道吗
相关问题 更多 >
编程相关推荐