【问题标题】:Django - best way to replace custom image tag in textfield by imagefieldDjango - 用图像字段替换文本字段中的自定义图像标签的最佳方法
【发布时间】:2017-11-08 08:50:37
【问题描述】:

用模型中作为图像字段存在的图像 url 替换自定义“标签”(例如 [IMG]image_name[/IMG])的最佳方法是什么?例如:

class ImageResource(models.Model):
   name = models.CharField(verbose_name='Name')
   img = models.ImageField(verbose_name='Image')

class Post(models.Model):
   title = models.CharField(verbose_name='Title')
   text = models.TextField(verbose_name='Text')
   images = models.ManyToManyField(ImageResource,verbose_name="Images")

DetailView 显示模板如下:

{{ object.text }}

我会将 object.text 中的所有 [IMG]name[/IMG] 替换为仅当 images.name == name 时具有 src = images.url 的 html img 代码。 我不想使用所见即所得的编辑器。我不知道这样做的最佳位置是什么 - 在模型、视图(什么功能?)或特定过滤器中?

【问题讨论】:

    标签: python html django


    【解决方案1】:

    这取决于您的需要,如果您只想在模板中显示图像,可以在模板标签中使用它。但是,您也可以在视图中处理它。这是一个用于查找降价图像的示例模板标签。

    正则表达式demo

    @register.filter
    def markdown_find_images(markdown_text):
        """
        return list of image urls inside `markdown_text`.
        :param `markdown_text` is markdown text to find.
        example markdown text:
            Hello ![title](/path/to/image.png)
        provides for:
            jpeg|jpg|png|gif
        usage:
            {{ field_name|markdown_find_images }}
        example:
            {{ post.description|markdown_find_images }}
        """
        regex = r"[^(\s]+\.(?:jpeg|jpg|png|gif)(?=\))"
        return re.findall(regex, markdown_text)
    

    在你的情况下,demo:

    @register.filter
    def find_images(plain_text):
        """
        return list of image urls inside `markdown_text`.
        :param `markdown_text` is markdown text to find.
        example markdown text:
            Hello [img]/path/to/image.png[/img]
        provides for:
            jpeg|jpg|png|gif
        usage:
            {{ field_name|find_images }}
        example:
            {{ post.description|find_images }}
        """
        regex = r"\[img\](.+?)\[\/img\]"
        return re.findall(regex, plain_text)
    

    【讨论】:

    • 我不会在文本字段中包含 url。我将通过图像名称动态获取链接到 Post 模型的 url(仅此 grup)。我在过滤器中进行查询是不好的方式。
    猜你喜欢
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多