有没有办法使用常量替换在 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中的同一个模板中渲染多个视图?如果有最佳实践可以做到这一点?提前致谢
有没有办法在 Google App Engine 的 Webapp2 框架中使用 Django 模板