Skip to main content
 首页 » 编程设计

python之Django 2.0 中的反向 URL

2024年08月19日29dudu

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

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

这是我用来打印 url 的,

<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) 

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

请您参考如下方法:

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

使用path()用于简化语法。

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