我在项目中有多个应用程序,并使用 appname 和命名空间 网址。我需要在 django 模板中动态添加 js 变量值 包含应用名称的网址。如果我写没有像这样的appname——
var temp =23
var href = "{% url 'report_page' id=0 %}".replace(/0/, temp.toString())
它给出的结果是——
"{% url 'report_page' location_id=23 %}"
但是当我使用 appname 时,它对我不起作用,例如
var href = "{% url 'appname : report_page' id=0 %}".replace(/0/, temp.toString())
让我给你确切的代码:在 django 模板中:
<html>
<a href="{% url 'appname : report_page' id=0 %}">Report</a>
</html>
var href = "{% url 'appname : report_page' id=0 %}".replace(/0/, temp.toString(((在应用名称 url.py:
appname = 'appname'
urlpatterns = [
url(r'^report-page$', views.report_page, name='report_page'),
url(r'^report-page/(?P<id>[0-9]+)$', views.report_page, name='report_page'),
]+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
在视图中:
def report_page(request):
import pdb;pdb.set_trace()
# location_id = request.GET['id']
return render(
request,
'report.html',
{'id' : request.user.id, 'id' : ''}
)
注意:我使用的是 django 1.11,我也尝试过低于一个但得到空字符串:
var temp =$('#check_id').val() <a href="{% url 'appname: report_page' %}?id="+temp;>Report</a>
当你使用djagno url如{% url 'appname : report_page' id=0 %}
时,当django模板渲染时它会转换成类似的/appname/report-page/0/
,它的解决方案是,首先,您将获取a
标签属性值,然后更改此值。请在下面找到解决方案。
var arr = $("a").attr('href').split('/')
arr[arr.length-2]=777 # demo value
$("a").attr('href',arr.join('/'))