django - 当我们想要捕获整数或 slug 参数时 URL 抛出错误的路径函数
问题描述
我是 django 2.2.4 的初学者。我试图跟踪 urls.py 文件。
from firstapp import views
from django.contrib import admin
from django.urls import re_path, path
urlpatterns = [
re_path(r'^admin/$', admin.site.urls),
re_path(r'^$', views.index),
path('articles/2003/', views.index),
path('articles/<int:year>/', views.index),
]
我看到 url http://127.0.0.1:8000/articles/2003/执行views.index。但是,当我运行 url http://127.0.0.1:8000/articles/2005/时,出现错误。
Request URL: http://127.0.0.1:8000/articles/2005/
Django Version: 2.2.4
Exception Type: TypeError
Exception Value:
index() got an unexpected keyword argument 'year'
为什么这不起作用?
如上。预计此 ur 将与该行匹配
path('articles/<int:year>/', views.index).
解决方案
您views.index
应该采用一个名为 year 的参数,例如:
def index(request, year):
...
现在应该只有
def index(request):
....
并且/articles/2003/
正在工作,因为您在 url conf 中设置了明确的路径:
path('articles/2003/', views.index), # matches articles/2003/, calls views.index(request) with no year param
path('articles/<int:year>/', views.index), # matches articles/2005/, calls views.index(request, year=2005), throws error
删除 的显式路径articles/2003/
,将year
参数添加到views.index
,然后事情应该可以工作了。
推荐阅读
- python - python中的SQL输出-如何将数据框中的所有元组转换为字符串
- c++ - 在 C++ 中重放函数调用
- python-3.x - backtrader 打印数据提要 vaues 不打印小时和分钟,默认为
- git - 上传使用 git clone 复制的项目的一部分
- arrays - 将一组输入映射到另一个数组
- python - 使用分隔符python在列表python中切片字符串
- ios - 在旧版 iOS 模拟器上运行时,出现错误“无法启动 launchd_sim:无法绑定到会话,launchd_sim 可能已崩溃或退出响应”
- reactjs - 在没有 forwardRef 的情况下处理函数组件中的 ref
- qt - 将图像从文件夹加载到精确坐标
- python - 多单选按钮选择