是否可以将动态urls
(我有^c/(?P<username>\w+)/^
)中的某些参数传递给自定义context_processors
?
views.py(我将username
从url传递到RequestContext
)
def client_profile(request, username):
# .... some context
return render_to_response('profile.html', context,
context_instance=RequestContext(request, username))
context_processors.py
def default_profile(request, username):
client = get_object_or_404(Client, user__username=username)
#.... some default
return {
'client': client,
#.... some default
}
我试试这个,但是当我重新加载页面时出错了
default_profile() missing 1 required positional argument: 'username'
还有其他办法可以做这样的事吗?或者它真的不可能吗?
-Thanks。
答案 0 :(得分:0)
上下文处理器相当简单,只有一个参数; HttpRequest
你能做什么,就是在会话中添加一些内容,因为可以通过请求访问,但除非它是系统范围内的或非常通用的,否则通常最好通过视图提供上下文变量。特别是在您的示例中,如果您在网址中提供用户名,则表示您在该视图的响应中提供了一个上下文,因此您可以在此时提供client
。
无论如何,如果您通过会话提供了某些内容,那么您的代码可能会是这样的;
def client_profile(request, username):
# .... some context
request.session['username'] = username
return render_to_response(
'profile.html', context,
context_instance=RequestContext(request, username)
)
def default_profile(request):
context = {}
if 'username' in request.session:
username = request.session['username']
client = get_object_or_404(Client, user__username=username)
context.update({
'client': client,
})
return context