CS50W Network项目分页实现后Fetch请求报404错误求助
URL末尾斜杠不匹配:你的Fetch请求路径末尾带了斜杠(
/get_post/${username}/?page=${page}&per_page=${itemsPerPage}),但Django路由配置是path("get_post/<str:username>", views.get_post, name="all_posts"),没有包含末尾斜杠。Django默认只会匹配路径完全一致的路由,带斜杠的请求找不到对应规则就会触发404。可以把Fetch请求路径改成不带末尾斜杠:/get_post/${username}?page=${page}&per_page=${itemsPerPage},或者在路由规则里加上斜杠:path("get_post/<str:username>/", views.get_post, name="all_posts")。路由顺序冲突:检查Django URLconf中,这条
get_post/<str:username>路由是否被更靠前的其他路由拦截。比如如果存在path("get_post/all", ...)这类特定路由且放在动态参数路由前面,请求/get_post/all时会优先匹配特定路由,若该路由对应的视图未正确处理,也会导致404。确保动态参数路由在特定路由之后,避免被提前拦截。相对路径错误:确认Fetch请求使用的是绝对路径(以
/开头)。如果当前页面URL是类似/profile/的路径,用相对路径get_post/${username}/...会拼接成/profile/get_post/${username}/...,和路由配置不符引发404。必须保证请求路径以/开头,和路由的根路径保持一致。路由或视图配置失误:检查
views.get_post函数是否存在且拼写正确,确认项目主URLconf是否通过include正确引入了该子路由。若路由所在的app未在INSTALLED_APPS中注册,也可能导致路由无法被识别。
另外,建议打开浏览器开发者工具的Network标签,查看实际发送的请求URL,确认路径是否和预期一致,这能快速定位路径类问题。
内容的提问来源于stack exchange,提问作者Louis Eiden

