反向查看失败,因为参数为None

时间:2016-10-19 15:04:42

标签: django django-tables2

在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$'] 

我尝试创建了两个接受参数的网址,但没有一个但是它仍然不允许表格加载那些没有的人。即使车辆登记文件无法加载,我也要加载。

1 个答案:

答案 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>  
相关问题