有没有办法使用常量替换在 django 模板中的 html 文件中传递 URL 值?

Posted

技术标签:

【中文标题】有没有办法使用常量替换在 django 模板中的 html 文件中传递 URL 值?【英文标题】:Is there way a to pass URL values in html files in django templates using constant substitution? 【发布时间】:2018-11-07 03:42:21 【问题描述】:

这是 Django 问题。我是这个的新手。 这是我的 url.py 文件

from django.urls import path
from splunkAutomation.logic.Constants import Constants
from . import views

app_name = 'splunkAutomation'
urlpatterns = [
 path(Constants.URL_FOR_SEEING_ALL_SPLUNK_QUERIES,views.viewForSeeingAllSplunkQueries, name=Constants.NAME_OF_URL_FOR_SEEING_ALL_SPLUNK_QUERIES),
]

我希望能够在 html 模板中引用此名称“Constants.NAME_OF_URL_FOR_SEEING_ALL_SPLUNK_QUERIES”。

以下是html文件中的sn-p

    <ul class="actions">
    <li><a href="% url 'splunkAutomation:splunkQuerySpecific' query.id  %" class="button special">Check</a></li>
    </ul>

基本上我想使用常量替换而不是% url 'splunkAutomation:splunkQuerySpecific' query.id %

有没有办法使用它?

【问题讨论】:

【参考方案1】:

我给路径加个名字:

path(Constants.URL_FOR_SEEING_ALL_SPLUNK_QUERIES,views.viewForSeeingAllSplunkQueries, name="url_link"),

你可以这样使用它:

<a href="% url 'url_link' query.id  %" class="button special">Check</a>

如果你想要一个动态的 url,你可以这样做(例如基于类的视图):

urlpatterns = patterns('',
    url(
        regex=r'^(?P<webaddress>\w+)/$',
        view=Mysite.as_view(),
    ),
)

在您看来,您掌握了参数:

def dispatch(self, request, *args, **kwargs):
    self.webaddress= kwargs.get('webaddress', '')

在您的模板中,您可以使用

访问该值
 view.webaddress 

【讨论】:

嗨@ger.s.brett,感谢您的快速回复。常量“name=Constants.NAME_OF_URL_FOR_SEEING_ALL_SPLUNK_QUERIES”的值为“splunkQuerySpecific”。我不想使用你提到的它的原因是因为“假设如果名称发生变化,那么我将不得不在它被引用的所有地方更改它(比如上面的 href 标签)。但是如果我提到它(如果可能的话)通过在所有地方使用'Constant.NAME_OF_URL_FOR_SEEING_ALL_SPLUNK_QUERIES'然后即使名称发生变化,其余代码仍将保持整洁。:) 但是为什么要改名字呢? URL 的名称是常量。 嗨@DanielRoseman,例如,应用程序更改中给定页面的功能(如上面显示所有splunk查询)(明天我可能想在同一页面上添加一些解析功能),那么在这种情况下,我想相应地更改 URL 的名称,以便为读者提供有关页面功能的更好上下文。 这不是您应该这样做的方式(您的解决方案将始终要求服务器重新启动):如果您想动态执行此操作,您应该捕获 url 的最后一部分并将其交给视图 -您将捕获这部分 url 作为参数。 哦,好吧@ger.s.brett 猜猜它不是一个很好的用例。无论如何,为了清楚起见,当您说“您的解决方案将始终要求重新启动服务器”和“捕获 url 的最后一部分”时,请您详细说明一下。

以上是关于有没有办法使用常量替换在 django 模板中的 html 文件中传递 URL 值?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 django 模板中迭代列表中的列表?

有没有办法将变量传递给 Django 中的“扩展”模板?

有没有办法可以在Django中的同一个模板中渲染多个视图?如果有最佳实践可以做到这一点?提前致谢

有没有办法在 Google App Engine 的 Webapp2 框架中使用 Django 模板

有没有办法在 XSLT 转换中用应用模板替换 for-each?

有没有办法将 Django 模型查询集转换为模板中的 json 或 json 字符串?