【问题标题】:django url_for equivalentdjango url_for 等效
【发布时间】:2019-03-20 12:58:12
【问题描述】:

我正在尝试寻找一个相当于Flask的url_for的django方法。

我不是在寻找 jinja 等价物(如图所示 here)——我说的是房子的 python 方面

在我的烧瓶应用程序中,我发送一个 HTML 字符串,如下所示:

my_picture = '<img src="{}">'.format(url_for('static', filename=r'images/myPic.jpg'))

我知道我可以在 html 中以 &lt;img src={{ my_picture }}&gt; 执行此操作,但这不是我的目标。

我一直在做的是

from my_project.settings import STATIC_URL
my_picture = '<img src="{}">'.format(os.path.join('static', 'images/myPic.jpg'))

但必须有更好的方法

谢谢!

【问题讨论】:

  • 我在烧瓶中使用 jinja ——我明确没有询问模板语言或任何丰富的 HTML 元素。我正在寻找python方法@Daniel_Roseman

标签: python django


【解决方案1】:

这取决于您要查找的内容。

静态文件

如果您想获取static file 的 URL,您可以使用以下位:

from django.templatetags.static import static

url = static('images/myPic.jpg')

网址配置

如果要在 URL 配置中获取命名 URL 的 URL 路径,可以使用 reverse URL resolver。假设您的 URL 配置如下所示:

如果您的 URL 配置如下所示:

from example import views

path('my/fancy/example/', views.example, name='my-example-view')

然后你可以用这个来获取 URL:

from django.urls import reverse

url = reverse('my-example-view') # will return "my/fancy/example/"

【讨论】:

    【解决方案2】:

    当我需要的时候,我也会在我的 python 文件中使用模板标签:

    from django.contrib.staticfiles.templatetags.staticfiles import static
    
    url = static('images/myPic.jpg')
    

    【讨论】:

    • 为了完整起见,python代码中{% url %}模板标签的等价物是django.core.urlresolvers.reverse
    • 这怎么能像 url_for 方法一样概括呢?以便它可以与静态、索引、...和所有其他页面一起使用?
    • 不能。静态文件和媒体文件与您的应用程序 url 无关,因为在正常的生产环境中它们不是由 Django 提供的。
    • 请注意 django.contrib.staticfiles.templatetags.staticfiles.static 已被 django.templatetags.static.static 弃用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 2016-07-13
    相关资源
    最近更新 更多