html模板django python中带有拆分的子字符串

Posted

技术标签:

【中文标题】html模板django python中带有拆分的子字符串【英文标题】:Substring with split in html template django python 【发布时间】:2016-06-02 06:27:39 【问题描述】:

我有这个模型:

def generate_filename(self, filename):
    url = "files/users/%s/%s" % (self.user.id, filename)
    return url

class Upload(models.Model):
    user = modelo.ForeignKey(User, null=True)
    docfile = modelo.FileField(upload_to=generate_filename)

Views.py

allfiles = Upload.objects.all()

我在 django 中有一个上传文件的列表:

<ul>
    % for item in allfiles %
        <li><a href=" item.docfile.url "> item.docfile.name </a></li>
    % endfor %
</ul>

它在 html 上显示我的文件的完整路径:

files/users/1/test.txt

我只想显示test.txt

我试过这个:

<ul>
    % for item in arquivos %
        <li><a href=" item.docfile.url "> item.docfile.name.split('/')[3] </a></a></li>
    % endfor %
</ul>

但我得到了Could not parse the remainder: '('/')' from 'item.docfile.name.split('/')[3]'

编辑

我尝试在myapp/templatetags/filename.py中创建一个文件:

import os

from django import template


register = template.Library()

@register.filter
def filename(value):
    return os.path.basename(value.docfile.name)

在模板中:

% load filename %
<ul>
    % for item in allfiles %
        <li><a href=" item.docfile.url "> item.docfile|filename </a></li>
    % endfor %
</ul>

现在我得到了这个:

'filename' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_static
admin_urls
cache
filaname
future
i18n
l10n
log
static
staticfiles
tz

【问题讨论】:

您不能在 django 模板中使用原始 python... 很抱歉,我是 django 的新手……你能说得更具体一点或举一些例子吗? django filefield return filename only in template的可能重复 我只是想在不改变模型的情况下解决这个问题... :( 然后在副本中向下滚动。虽然选择的答案不会改变模型,但它会为其添加一个方法。 【参考方案1】:

对我来说,我更喜欢你在你的模型中创建一个函数来为你做这件事

import os

class Upload(models.Model):
    user = modelo.ForeignKey(User, null=True)
    docfile = modelo.FileField(upload_to=generate_filename)

    def get_docfile_name(self):
        if not self.docfile:
            return ""
        file_path = self.docfile.name
        return os.path.basename(file_path)

在您的模板中

<ul>
% for item in allfiles %
    <li><a href=" item.docfile.url "> item.get_docfile_name </a></li>
% endfor %

【讨论】:

以上是关于html模板django python中带有拆分的子字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 pandas-python 中带有空格的图像拆分列中的值

Django 使用模板标签拆分文本字段

模板中带有参数的函数。姜戈

访问html表中带空格的json对象

Django Crispy 表单拆分字段布局

如何在 django 模板中拆分字符串?