【问题标题】:Alternative/ How to use {% url %} in django 1.8?替代方案/如何在 django 1.8 中使用 {% url %}?
【发布时间】:2015-10-02 09:49:42
【问题描述】:

我正在 1.8 版上学习 django。

在他们的documentation 中,他们建议使用{% url %} 模板标签以避免硬编码网址。但在 v1.8 中不起作用,并确认在此版本中已弃用。

https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#url

有没有人知道替代方案?

更新: p_index.html

{% if latest_question_list %}
    <ul>
    {% for que in latest_question_list %}
    <li><a href="{% url 'polls:detail' que.id %}">{{ que.question_text }}</a></li>
    {% endfor %}
    </ul>
{% else %}
    <p> No polls questions are availabe. </p>
{% endif %}

上面的代码给了我这个错误:'str' object has no attribute 'regex'

当我如下更改 href 行时,工作正常!

<li><a href="/polls/{{ que.id }}/">{{ que.question_text }}</a></li>

投票应用中的 urlpatterns:

urlpatterns = [

    url(r'^$', views.index, name='view_index'),

    # ex: /polls/5/
    url(r'^(?P<q_no>[0-9]+)/$', views.detail, name='detail'),
    # ex: /polls/5/results/
    url(r'^(?P<q_no>[0-9]+)/results/$', views.results, name='results'),
    # ex: /polls/5/vote/
    url(r'^(?P<q_no>[0-9]+)/vote/$', views.vote, name='vote'),

]

主要的urls.py如下:

urlpatterns = [

    url(r'^$', 'home.views.index'),
    url(r'^polls/', include('polls.urls', namespace = 'polls')),
    url(r'^android/start', 'testpage.views.androidStart'),
    url(r'^admin/', include(admin.site.urls)),

]

【问题讨论】:

  • 不推荐使用该语法。仅不推荐使用用于指定视图的 'path.to.some_view' 点分路径语法。
  • 你需要展示你是如何使用它的,文档中的语法很好
  • 请贴出'str' object has no attribute 'regex'的完整回溯。
  • 谢谢大家!,今天早上我重新启动,它工作正常!,我仍然不明白为什么我得到渲染错误!不管怎样,既然Wtower帮助我更好地理解了它,我会接受他的回答

标签: python django


【解决方案1】:

我认为你搞错了。就我所知,{% url %} 标签并未被弃用,而且我从未听说过任何替代品。不推荐使用的是传递点 Python 路径的语法:

自 1.8 版起已弃用:

您也可以将点分 Python 路径传递给视图函数,但这种语法已被弃用,将在 Django 1.10 中删除:

{% url 'path.to.some_view' v1 v2 %}

【讨论】:

  • 嗨,谢谢!,我用代码部分更新了问题。你能告诉我到底出了什么问题吗?
  • 欢迎您!您是否在主 urls.py 中指定了一个命名空间? (不是您应用的 urls.py)。
  • 是的,我有这样的命名空间:url(r'^polls/', include('polls.urls', namespace = 'polls')),还注意到同样的错误发生在“ {% url 'polls:detail' que.id %}" 无论如何,我没有多个同名的 url 应用程序
  • 那么{% url 'detail' que.id %} 应该是{% url 'polls:detail' que.id %}
  • 尽管我没有分配任何其他同名的 url,但我检查了{% url 'polls:detail' que.id %}。模板渲染期间同样的错误..
猜你喜欢
  • 2014-08-26
  • 2015-06-13
  • 2015-06-25
  • 2019-05-01
  • 2012-05-17
  • 2011-07-21
  • 1970-01-01
  • 2016-08-23
  • 2013-01-13
相关资源
最近更新 更多