django新手村13-----路由规则

urls.py str有可以用int

path('personal_info<str:name>/', views.personal_info, name='personal_info'),

views.py str:后面的名称要与request后面的参数名称相同

def personal_info(request, name):    student = Student.objects.filter(name=name).first()    return render(request, 'personal_info.html', context=locals())

student_list.html url引号完后空白+变数

   {% for  student in students %}       <a href="{% url 'app:personal_info' student.name%}">{{student.name}}</a>       <br>          {% endfor %}

用这种路由规则要小心,如果前面不加personal_info,而是只有<str:name>的话,它可能就会匹配错误的path,它是按照顺序,由上往下匹配的,举个例子

假设依照下面的路由,那你不管访问任何网址,都只会跑到views.personal_info的页面

    path('<str:name>/', views.personal_info, name='personal_info'),    path('hello_world/', views.hello_world),    path('student_list/', views.student_list, name='student_list'),

对了前面忘记提到(用get的方式传值),只要是在路由跟参数有关西,尽量都要设置一个default值,不然别人修改你的网址很容易出现伺服器错误的代码500(但是404没关西),或是出现资料空白的情况


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章