Django 2.0中的反向URL

时间:2017-12-05 15:06:43

标签: python django django-urls django-2.0

新的Django 2.0更新打破了我的方式来反转网址并将其打印到模板。使用正则表达式,它可以正常工作,但在使用新的简化方式时,它会返回错误。

NoReverseMatch at /blog/archive/
Reverse for 'article' with keyword arguments '{'id': 1}' not found. 1 pattern(s) tried: ['blog/article/<int:id>/$']

以下是我用来打印网址的内容,

<h3 class="item-title"><a href="{% url 'blog:article' id=article.id %}">{{ article.title }}</a></h3>

这是url模式,

    url(r'^blog/article/<int:id>/$', views.article, name='article'),

这是文章功能,

def article(request, id):
    try:
        article = Article.objects.get(id=id)
    except ObjectDoesNotExist:
        article = None

    context = {
        'article': article,
        'error': None,
    }

    if not article:
        context['error'] = 'Oops! It seems that the article you requested does not exist!'

    return render(request, 'blog/article.html', context)

我还没有找到解决方法。希望这篇文章能够帮助其他人。

1 个答案:

答案 0 :(得分:3)

在Django 2.0中,url()re_path()的别名,仍然使用正则表达式。

使用path()获得简化语法。

from django.urls import path

urlpatterns = [
    path(r'^blog/article/<int:id>/$', views.article, name='article'),
]