【问题标题】:URL not matching url pattern in DjangoURL 与 Django 中的 url 模式不匹配
【发布时间】:2021-08-24 03:39:22
【问题描述】:

我正在尝试学习 Django,通过了官方教程并自己尝试了一下。我创建了一个新应用程序并且可以访问索引页面,但我无法使用模式匹配转到任何其他页面。这是我的monthlyreport/url.py

from django.urls import path

from . import views

#app_name = 'monthlyreport'

urlpatterns = [
    path('', views.index, name='index'),
    path('<int:question_id>/', views.detail, name='detail'),
] 

还有我的monthlyreport/views

from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views import generic

from .models import Report

def index(request):
    report_list = Report.objects.all()[:5]
    template = loader.get_template('monthlyreport/index.html')
    context = {
        'report_list': report_list,
    } 
    return HttpResponse(template.render(context, request))
    
def detail(request, question_id):
    return HttpResponse("You're looking at question %s." % question_id)

http://127.0.0.1:8000/monthlyreport/0 的调试正在显示

 Using the URLconf defined in maxhelp.urls, Django tried these URL patterns, in this order:
 
 monthlyreport [name='index']
 monthlyreport <int:question_id>/ [name='detail']
 polls/
 admin/
 accounts/

 The current path, monthlyreport/0, didn’t match any of these.

再次,使用http://127.0.0.1:8000/monthlyreport/ 去索引工作正常,但我无法匹配整数。我真的很感激任何建议,我现在非常非常困惑。

【问题讨论】:

  • 你能告诉我们你的根 urls.py

标签: django django-views django-urls


【解决方案1】:

您的代码有问题是slash(/)。在您的根 urls.py 文件中,您必须在其中使用过类似的东西:

path('monthlyreport', include('monthlyreport.url'))

所以,这里的问题是,如果您在 monthlyreport.url 中设置您的 url,那么您应该在路径中以 / 结尾,例如:

urlpatterns = [
    path('', views.index, name='index'),
    path('<int:question_id>/', views.detail, name='detail'),
] 

否则,您必须将 slash(/) 放在每条新路径的前面,例如:

urlpatterns = [
    path('', views.index, name='index'),
    path('/<int:question_id>/', views.detail, name='detail'),
          |
          |
          V
        Here
]

解决方案

总之,方便的解决方案是在 urls.py 文件的路径后添加slash(/)。喜欢:

path('monthlyreport/', include('monthlyreport.url'))
                   |
                   |
                   |
                   V
             Add slash here

【讨论】:

  • 如果我能请你喝一杯我会的,我已经为此苦苦挣扎了好几个小时。谢谢!
  • @Nate 我的荣幸.... 始终关注错误消息,他们拥有有关问题的所有信息 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
  • 2011-11-03
  • 2017-07-16
  • 1970-01-01
  • 2018-12-02
  • 2013-12-10
  • 1970-01-01
相关资源
最近更新 更多