鱼C论坛

 找回密码
 立即注册
查看: 5474|回复: 7

[已解决]django path 后面的ID怎么加上啊,真心不会了

[复制链接]
发表于 2018-3-28 22:55:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
from django.urls import path

from . import views
urlpatterns = [
    path('',views.index),
    path('grades/',views.grades),
    path('students',views.students),
    path('grades/<int:name>',views.gradesStudents)        #就是这里




这是报错,求前辈指点
Page not found (404)
Request Method:
GET
Request URL:
http://127.0.0.1:8000/grades/1%7D/

Using the URLconf defined in project001.urls, Django tried these URL patterns, in this order:
  • admin/
  • grades/
  • students
  • grades/<int:name>
  • grades/
  • students
  • grades/<int:name>
The current path, grades/1}/, didn't match any of these.

You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.


最佳答案
2018-3-29 10:30:42
<a href="{{grade.id}}}"> {{grade.gname}} </a> 这里有点问题多个花括号.
我看你意思挺简单的.你要ID号可以这样
def gradesStudents(request):
    id = request.GET['id']   #views里面加这句就可以获取id的值.
    grade = Grades.objects.get(pk=id)
    studentslist= grade.students_set.all()
    return render(request,'myApp/students.html',{'students':studentslist})


html

<a href="?id={{grade.id}}"> {{grade.gname}} </a>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-29 08:46:45 | 显示全部楼层
(?P<leixing>[A-Za-z]+_*[A-Za-z]*)
?P<leixing>视图函数可以调用的参数名.[A-Za-z]+_*[A-Za-z]*这一段就是leixing这个变量的范围


views里面就可以接收这个参数了
def model_show(request,leixing,xinghao):


不知道你是不是要这个意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-29 09:07:49 | 显示全部楼层
貌似跟flsk里面的一样,这个动态URL,你前面是不是没有加/  没有匹配到吧。    <int:name>倒是没有错,后面的只要是整数值都会匹配到。 比如这样访问时:www.baidu.com/grades/123456  是匹配的。 “将狗”还没有用,先学学FLASK+Myslq熟悉一下撒,大型框架必须都按照它的规则,微框架喜欢怎么玩就怎么玩。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-29 09:14:30 | 显示全部楼层
html


<body>
    <h1>班级信息列表</h1>
    <ul>
        <!--python04,python05,python06-->
        {%for grade in grades%}
        <li>
            <a href="{{grade.id}}}"> {{grade.gname}} </a>
        </li>
        {%endfor%}
    </ul>
</body>

views
def gradesStudents(request,num):

    grade = Grades.objects.get(pk=num)
    studentslist= grade.students_set.all()
    return render(request,'myApp/students.html',{'students':studentslist})

app 下的 urls
from django.urls import path

from . import views
urlpatterns = [
    path(
'',views.index),
    path(
'grades/',views.grades),
    path(
'students',views.students),
    path(
'grades/<int:question_id>/',views.gradesStudents),#这一段








根目录下的  url
from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('myApp.urls')),
    path('',include('myApp.urls')),
   
path('<int:question_id>/',include('myApp.urls')) #path地址



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-29 09:29:53 | 显示全部楼层
本帖最后由 史莱克 于 2018-3-29 10:09 编辑

还是,不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-29 10:30:42 | 显示全部楼层    本楼为最佳答案   
<a href="{{grade.id}}}"> {{grade.gname}} </a> 这里有点问题多个花括号.
我看你意思挺简单的.你要ID号可以这样
def gradesStudents(request):
    id = request.GET['id']   #views里面加这句就可以获取id的值.
    grade = Grades.objects.get(pk=id)
    studentslist= grade.students_set.all()
    return render(request,'myApp/students.html',{'students':studentslist})


html

<a href="?id={{grade.id}}"> {{grade.gname}} </a>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-29 11:29:31 | 显示全部楼层
tmkuej 发表于 2018-3-29 10:30
{{grade.gname}}  这里有点问题多个花括号.
我看你意思挺简单的.你要ID号可以这样
def gradesStudents(r ...

非常感谢,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-29 13:12:09 | 显示全部楼层
这个是django自带的方法.你想自己写可以参考https://code.ziqiangxuetang.com/django/django-views-urls.html,你上面是写对了的.方法对只是那个几变量名不一致导找不到页面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-23 21:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表