我一直在努力解决这个问题,尽管所有其他问题/答案我都想不出来 . 我可以用FBV这样做,但我正在尝试用CBV做 .
我正在尝试在网页上创建一个电路板列表,点击每个电路板会将您带到电路板的详细信息 . 例如,在简单的html中:
<a href="board1.html">board 1</a>
<a href="board2.html">board 2</a>
但是,我似乎无法让urlconf接受我的url,因为我正在使用变量 . 我的模板用于列出电路板的摘录在list_boards.html中:
{% for board in all_my_boards %}
<a href="{% url 'leaderboard:view_board' board.id %}">{{ board.title }}</a>
<br>
{% endfor %}
urlconf是:
url(r'^view_board/?P(<board_id>\d+)/$', ViewBoardDetails.as_view(), name='view_board'),
并包含在主urlconf中:
url(r'^leaderboard/', include('leaderboard.urls', namespace='leaderboard')),
电路板详细信息在视图中显示为ViewBoardDetails:
class ViewBoardDetails(DetailView):
model = LeaderBoard
template_name = 'leaderboard/view_board.html'
def get(self, request, *args, **kwargs):
my_board_id = self.args[0]
return render(request, 'leaderboard/view_board', {'my_board_id':my_board_id})
我得到的错误信息是:
Reverse for 'view_board' with arguments '(1,)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'leaderboard/view_board/?P(<board_id>\\d+)/$']
1 回答
忽略我对关键字参数的评论 - 这不应该有所作为 .
你的网址有误 . 正则表达式组
board_id
的括号位于错误的位置 . 它应该是:很难发现,但
?P(<board_id>\d+)
应该是(?P<board_id>\d+)