【问题标题】:NoReverseMatch at / listNoReverseMatch at / list
【发布时间】:2019-02-07 17:37:38
【问题描述】:

我试过获取动态链接

错误:

NoReverseMatch at /

未找到带有关键字参数“{'pk': 1}”的“new_single”的反向操作。 尝试了 1 种模式:['single/']

代码: 观点:

{% for new in news %}

    {{ new.id }}
     <h2><a href="{% url 'new_single' pk=new.id %}">{{ new.title }}</a></h2>
{% endfor %}

网址:

urlpatterns = [
    url(r'^$', views.news_list, name='news_list'),
    url(r'single/<int:pk>', views.new_single, name="new_single"),
]

观看次数:

def new_single(request,pk):
    new=get_object_or_404(News,id=pk)
    return render(request,"news/news_single.html",{"new":new})

【问题讨论】:

  • 您是否在urls.py 中定义了namespace
  • 等等,你在 url 函数中定义了一个路径模式。你混淆了两种语法。

标签: django python-3.x django-views


【解决方案1】:

您正在混合使用两种语法变体来指定模式。由于,有两种方法可以指定 URL 模式:使用path(..) [Django-doc],以及使用re_path(..) [Django-doc] 用于类似正则表达式的模式(别名是url(..) [Django-doc])。

但是,您将两者混合在一起。您可以同时使用这两个,但您需要指定 per urlpatterns 输入正确的一个:

#  app/urls.py

from django.urls import path, re

urlpatterns = [
    url(r'^$', views.news_list, name='news_list'),
    path('single/<int:pk>/', views.new_single, name="new_single"),
]

【讨论】:

    猜你喜欢
    • 2017-09-10
    • 2020-06-01
    • 2017-08-19
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多