首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数内的Django重定向

函数内的Django重定向
EN

Stack Overflow用户
提问于 2017-07-30 06:03:05
回答 2查看 762关注 0票数 3

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

代码语言:javascript
复制
# 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))

然而,当我在一个函数中调用redirect时,它不能工作。我也听说过使用中间件来做这件事。这是如何工作的,我如何使它只应用于涉及到板的urls?

EN

回答 2

Stack Overflow用户

发布于 2017-07-30 06:37:53

代码语言:javascript
复制
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})
票数 3
EN

Stack Overflow用户

发布于 2017-07-30 06:04:30

添加return

代码语言:javascript
复制
def board(request, board_id, board_name):
    return RedirectIfWrong(request, board_id, board_name)
    # ^^^^
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45394483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档