从URL检索ID

时间:2013-10-15 22:33:43

标签: django

Django问题在这里。所以在我的base.html中,我有一个标题。标题包含指向用户特定页面的链接。也就是说,URL类似于:/ 1234 / home,/ 1234 / about等,其中1234是用户的id。我的问题是,如果我想创建一个指向名为home并且签名为home (request, user=0)的django视图方法的URL,其中user是与登录用户不同的用户,我该怎么办?这在模板中?为了澄清,我使用Django的{% url ... %}模板标签,我不能只做{% url [view_name] request.user.id %}因为我想要来自url的用户id,而不是登录用户的id。另外,我宁愿避免传递模板变量来获取url中用户的id,因为那时我必须在每个页面上都这样做。

2 个答案:

答案 0 :(得分:0)

Get the id您希望kwarg作为{url ...}视图,并通过要在{{1}}中使用的上下文将其作为变量传递给您的模板。

答案 1 :(得分:0)

如果要在所有模板中保留变量,请查看上下文处理器。它们会添加到每个RequestContext,以便所有模板都可以访问它们,前提是您使用render快捷方式或将RequestContext传递给template.render

https://docs.djangoproject.com/en/dev/ref/templates/api/#subclassing-context-requestcontext

https://github.com/django/django/blob/stable/1.5.x/django/core/context_processors.py

django使用了一些默认值。添加自己的相当简单。 我想你的上下文处理器看起来像

context_processors.py

def id_from_url(request):
   # Find url id component in request.path
   return { 'url_id' : url_id }

然后只需添加到您的设置文件appname.context_processors.id_from_url