Django 从数据库中提取数据导致404找不到页面错误

Django 从数据库中提取数据导致404找不到页面错误,django,python-3.x,django-templates,Django,Python 3.x,Django Templates,我试图以这样一种方式过滤我的观点,即当选择一个特定的学校时,该学校的pk将被放置在一个名为major的视图函数中,该函数将进一步查询db以显示与该学校对应的适当专业 我现在得到了一个页面未找到404错误,无法找出原因 url.py from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), path('<int:Major&g

我试图以这样一种方式过滤我的观点,即当选择一个特定的学校时,该学校的pk将被放置在一个名为major的视图函数中,该函数将进一步查询db以显示与该学校对应的适当专业

我现在得到了一个页面未找到404错误,无法找出原因

url.py

from django.urls import path

from . import views


urlpatterns = [
    path('', views.index, name='index'),
    path('<int:Major>/', views.Major, name='Major')
]
from django.urls import path

from . import views


urlpatterns = [
    path('', views.index, name='index'),
    path(' <int:school_pk>/', views.Major, name='Major')
]
views.py

from django.http import HttpResponse
from django.shortcuts import render
from .models import professor, School, Major, School_Major

def index(request):
    schools = School.objects.all()
    return render(request, 'locate/index.html', {'schools': schools})

def Major(request, school_pk):
    #Filter to a show the association of 1 schools majors
    school_choice = Major_School.objects.filter(school_id = school_pk)
    #Filter majors names required
    majors = Major.objects.filter(id = school_choice.major_id)
    return render(request, 'locate/major.html', {'majors' : majors})
我将发布索引文件的代码,该文件在下面提取学校信息,当单击学校(超链接集)时,它基本上会将学校的主键传递到主功能中,然后进行进一步过滤

  <ul>
    {% for list in schools %}
    <li><a href="{% url 'Major' {{list.id}}">{{list.name}}</a></li>
    <br><br>
    {%endfor%}
  </ul>
更新:

我是根据下面的建议来做的,我举了一个例子,我为index.html设置的格式对于调度器来说是合适的,而且调度器也设置得很好,但是为什么{%仍然会弹出呢?我不明白,我重新启动了服务器,认为它可能有问题,但是nada

index.html

{% for list in schools %}
<li><a href="{% url 'Major' 'list.id' %}">{{list.name}}</a></li>
<br><br>
{%endfor%}
{%用于学校中的列表%}


  • {%endfor%}
    url.py

    from django.urls import path
    from . import views
    
    
    urlpatterns = [
        path('', views.index, name='index'),
        path('<int:school_pk>/', views.Major, name='Major')
    ]
    
    从django.url导入路径
    从。导入视图
    URL模式=[
    路径(“”,views.index,name='index'),
    路径(“/”,views.Major,name='Major')
    ]
    
    我当前遇到的路径错误仍然是相同的,但我不明白的是,在将模板修复为正确的格式后(我还使用了一个示例项目作为参考,它没有传递参数的问题),我传递的不仅仅是/locate/school\u pk,而是花括号和%

    locate/ [name='index']
    locate/ <int:school_pk>/ [name='Major'] <== This one
    admin/
    register/ [name='register']
    profile/ [name='profile']
    login/ [name='login']
    logout/ [name='logout']
    [name='blog-home']
    about/ [name='blog-about']
    post/<int:pk>/ [name='post-detail']
    post/new/ [name='post-create']
    post/<int:pk>/update/ [name='post-update']
    post/<int:pk>/delete/ [name='post-delete']
    user/<str:username> [name='user-posts']
    ^media/(?P<path>.*)$
    
    The current path, locate/{% url 'Major' 1/, didn't match any of these.
    
    locate/[name='index']
    
    locate//[name='Major']我认为模板应该是:

    <li><a href="{% url 'Major' list.id %}">{{list.name}}</a></li>
    
  • 其中URL如下所示:

    path('<int:school_pk>/', views.Major, name='Major')
    
    path('/',views.Major,name='Major')
    

    参考请查看。

    我认为模板应该是:

    <li><a href="{% url 'Major' list.id %}">{{list.name}}</a></li>
    
  • 其中URL如下所示:

    path('<int:school_pk>/', views.Major, name='Major')
    
    path('/',views.Major,name='Major')
    

    请检查For循环中的。

    以供参考

    <ul>
        {% for list in schools %}
            <li><a href="{% url 'Major' list.id">{{list.name}}</a></li>
            <br><br>
        {%endfor%}
    </ul>
    
      {学校列表中的百分比%}


    • {%endfor%}

    只需删除for循环中的双大括号
    {{}

    ,就可以了

    <ul>
        {% for list in schools %}
            <li><a href="{% url 'Major' list.id">{{list.name}}</a></li>
            <br><br>
        {%endfor%}
    </ul>
    
      {学校列表中的百分比%}


    • {%endfor%}

    只需删除双大括号
    {{}

    ,因此我注意到错误消息中这个特定的url调度程序之间有一个空格

    locate/ [name='index']
    locate/ <int:school_pk>/ [name='Major'] <== This one
    admin/
    register/ [name='register']
    profile/ [name='profile']
    login/ [name='login']
    logout/ [name='logout']
    [name='blog-home']
    about/ [name='blog-about']
    post/<int:pk>/ [name='post-detail']
    post/new/ [name='post-create']
    post/<int:pk>/update/ [name='post-update']
    post/<int:pk>/delete/ [name='post-delete']
    user/<str:username> [name='user-posts']
    ^media/(?P<path>.*)$
    
    The current path, locate/{% url 'Major' 1/, didn't match any of these.
    
    locate/[name='index']
    
    找到//[name='Major'],因此我注意到错误消息中这个特定的url调度程序之间有一个空格

    locate/ [name='index']
    locate/ <int:school_pk>/ [name='Major'] <== This one
    admin/
    register/ [name='register']
    profile/ [name='profile']
    login/ [name='login']
    logout/ [name='logout']
    [name='blog-home']
    about/ [name='blog-about']
    post/<int:pk>/ [name='post-detail']
    post/new/ [name='post-create']
    post/<int:pk>/update/ [name='post-update']
    post/<int:pk>/delete/ [name='post-delete']
    user/<str:username> [name='user-posts']
    ^media/(?P<path>.*)$
    
    The current path, locate/{% url 'Major' 1/, didn't match any of these.
    
    locate/[name='index']
    
    locate/[name='Major']我尝试了不起作用的方法我会检查文档引用,我还注意到我在list.id之后输入了一个我应该输入%}的错误。我尝试了不起作用的方法我会检查文档引用,我还注意到我在list.id之后输入了一个我应该输入%}的错误,它不起作用我注意到现在花括号试图在url中被查询,这是奇怪的,我在我的更新中发布了它不起作用我注意到现在花括号试图在url中被查询,这是奇怪的,我在我的更新中发布了