iT邦幫忙

0

django新手村13-----路由規則

  • 分享至 

  • xImage
  •  

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沒關西),或是出現資料空白的情況


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言