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中带有拆分的子字符串的主要内容,如果未能解决你的问题,请参考以下文章