函数内的Django重定向

2024-10-03 11:21:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力建立论坛。在处理url时,有一个board id和一个board name。董事会名称的存在只是为了用户的可读性,这意味着如果有人输入了正确的id,但董事会名称错误或已更改,它将重定向到正确的url。我创建了一个函数来管理这个,因为我需要多次检查电路板是否正确,而不仅仅是这一个url。在

# urls.py
...
url(r'^boards/(?P<board_id>\d+)/(?P<board_name>[^/]+)/$', views.board, name='board'),
...

# views.py
def board(request, board_id, board_name):
    RedirectIfWrong(request, board_id, board_name)
    ...
    return render(request, 'forums/board.html', {'board': board})

def RedirectIfWrong(request, pk, name):
    board = Board.objects.all().get(pk=pk)
    if (board.name != name):
        return redirect(request.get_full_path().replace(name, board.name, 1))

但是,当我在函数内部调用重定向时,它不起作用。我也听说过使用中间件来实现这一点。这是如何工作的,我如何使它只适用于涉及一个董事会的网址?在


Tags: 函数namepyboard名称idurlreturn
2条回答
def board(request, board_id, board_name):
    bad = RedirectIfWrong(request, board_id, board_name)
    if bad:
      return bad
    ...
    return render(request, 'forums/board.html', {'board': board})

添加退货

def board(request, board_id, board_name):
    return RedirectIfWrong(request, board_id, board_name)
    # ^^^^

相关问题 更多 >