【发布时间】:2021-01-12 16:19:53
【问题描述】:
我想知道是否可以使用表单根据提供给基于类的视图的数据动态分配template_name?
例如我有以下表单页面:
views.py
def form_generate_pdf(request, project_id):
"""Form to collect data to insert into PDF"""
project = Project.objects.get(id=project_id)
if request.method == 'POST':
form = PDFForm(request.POST)
if form.is_valid():
request.session['field1'] = form.cleaned_data.get('field1')
return redirect('myapp:generate_pdf')
else:
form = PDFForm()
context = {
'project': project,
'form': form
}
以及生成 PDF 的页面:
views.py
class Generate_PDF(PDFTemplateView):
"""Generate a PDF using the values from form_generate_pdf"""
filename = "test.pdf"
# I want the field below to be dynamic depending on the value of field1 from the view form_generate_pdf
template_name = "myapp/pdf.html"
cmd_options = {
'page-size': 'Letter',
'viewport-size' : '1920x1080',
'footer-left' : '[page]/[topage]',
'no-outline' : True,
}
def get_context_data(self, **kwargs):
context = super(Generate_PDF, self).get_context_data(**kwargs)
field1 = self.request.session['field1']
context['field1'] = field1
}
我会说我是 django 的中级,但总的来说我对 python 和 django 还是很陌生(现在玩了大约 5 个月),我似乎没有足够的理解来弄清楚如何插入一些逻辑到Generate_PDF 类以编程方式选择模板类型。比如:
if field1 == 'this':
template_name = 'myapp/pdf_1.html'
else:
template_name = 'myapp/pdf_2.html'
问题是我的视图似乎看不到 field1 变量。
也许我也以错误的方式解决了这个问题。我可以让我的表单重定向到我想的独特的基于类的视图,但即使这样可以解决我的问题,它对我来说感觉非常重复和不正确。
【问题讨论】:
标签: python django wkhtmltopdf django-class-based-views