在tables.py中,我导入了django-tables2
class CarownerTable(tables.Table):
...
Car_registration=tables.LinkColumn('register_docs', args =[A('register__id')], text='View Register', orderable=False)
我的urls.py看起来像这样,
url(r'^register_docs/$', views.register_docs, name='register_docs' ),
url(r'^register_docs/(?P<docid>(\d)+)$', views.register_docs, name='register_docs' ),
和视图
def register_docs(request, docid=None):
#This view allows for the display of the pdf file
if docid is None:
#this line here loads a default image
doclink = '........./Car/Misc/noImageOnFile.pdf'
return HttpResponse(doclink, content_type="application/pdf")
else:
register_doc_path = Register.objects.get(pk=docid).register_File_Path
register_doc_data = open(register_doc_path, "rb").read()
t = loader.get_template('carmanager/display_docs.html')
variables = RequestContext(request, {'file':register_doc_data})
output = t.render(variables)
return HttpResponse(register_doc_data, content_type="application/pdf")
问题是,当我加载结果时,某些对象没有附加文档。引起这个
Reverse for 'register_docs' with arguments '(None,)' and keyword arguments '{}' not found. 2 pattern(s) tried: ['carmanager/register_docs/(?P<docid>(\\d)+)$', 'carmanager/register_docs$']
我尝试创建了两个接受参数的网址,但没有一个但是它仍然不允许表格加载那些没有的人。即使车辆登记文件无法加载,我也要加载。
答案 0 :(得分:1)
因此,如果您的某些记录缺少agrs的值,解决方法是不使用linkColumn。
如果您需要在django-tables2中显示信息,其中列可能或可能不具有网址链接所需的信息
templateColumn
例如
templateRegister = tables.TemplateColumn(template_name="carmanager/registertemplate.html")
registertemplate.html应该看起来像这样
<a {% if record.register__id %} target="_Blank" href="/carmanager/register_docs/{{record.register__id}}"> View Register {%else%} > No register {%endif%}</a>