问题描述
我有一个如下所示的 url 映射:
url(r'^(?P[a-z][a-z])/$', MyTemplateView.as_view()),
对于 lang
捕获组,我只接受几个值,即:(1) ro
和 (2) en
.如果用户输入http://server/app/fr/
,我想把它重定向到默认的http://server/app/en/
.>
由于 MyTemplateView
只有一个预期返回字典的方法,我该怎么做?
def get_context_data(self, **kwargs):返回{'foo':'等等'}
我知道这个问题很老,但我自己才刚刚完成.您可能认为要在 get_context_data
中执行此操作的一个原因是业务逻辑,但您应该将其放在 dispatch
中.
def dispatch(self, request, *args, **kwargs):如果不是 request.user.is_authenticated():返回重定向('家')return super(MyTemplateView, self).dispatch(request, *args, **kwargs)
在您的 dispatch
中保留您的业务逻辑,您应该是金子.
I have a url mapping that looks like this:
url(r'^(?P<lang>[a-z][a-z])/$', MyTemplateView.as_view()),
There are only a few values that I accept for the lang
capture group, that is: (1) ro
and (2) en
. If the user types http://server/app/fr/
, I want to redirect it to the default http://server/app/en/
.
How can I do this since MyTemplateView
only has a method that is expected to return a dictionary?
def get_context_data(self, **kwargs):
return { 'foo': 'blah' }
I know this question is old, but I've just done this myself. A reason you may think you want to do it in get_context_data
is due to business logic, but you should place it in dispatch
.
def dispatch(self, request, *args, **kwargs):
if not request.user.is_authenticated():
return redirect('home')
return super(MyTemplateView, self).dispatch(request, *args, **kwargs)
Keep your business logic in your dispatch
and you should be golden.
这篇关于我可以重定向到 django TemplateView 中的另一个 url 吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!