Python 将kwargs传递给反向视图;django 1.5

Python 将kwargs传递给反向视图;django 1.5,python,django,Python,Django,作为一名django初学者,我有一个小问题需要解决: html代码: 最后是basic.html的一部分,这样您就可以了解我为什么需要这个category变量了 basic.html ... ... ... 由于整个页面是通过引导和Jquery完成的,所以url的最后部分 一些/url/首先 一些/url/秒 部分/url/第三方 有点难看,因为accordio元素让我可以折叠并打开各自的内部实体,而无需重新加载页面。所以问题是:是否有一种方法可以反向传递kwarg,它将在视图中使用,而不是

作为一名django初学者,我有一个小问题需要解决:

html代码: 最后是basic.html的一部分,这样您就可以了解我为什么需要这个category变量了

basic.html

...
...
...
由于整个页面是通过引导和Jquery完成的,所以url的最后部分

一些/url/首先

一些/url/

部分/url/第三方

有点难看,因为accordio元素让我可以折叠并打开各自的内部实体,而无需重新加载页面。所以问题是:是否有一种方法可以反向传递kwarg,它将在视图中使用,而不是在reverse()中确定url

我获取url的方式类似于some/url/,并且仍然将kwarg从第一个.html页面传递到视图?

您可以使用以下方法:

如果这是您的url:

url(r'(?P<category>[a-z]+)$', 'display', name='dyn_display')
reverse('dyn_display', kwargs={'category': 'first'})
url(r'$', 'display', name='dyn_dysplay')
reverse('dyn_display')
如果这是您的url:

url(r'(?P<category>[a-z]+)$', 'display', name='dyn_display')
reverse('dyn_display', kwargs={'category': 'first'})
url(r'$', 'display', name='dyn_dysplay')
reverse('dyn_display')
要重定向,您可以在视图中这样使用它:

from django.http import HttpResponseRedirect
return HttpResponseRedirect(reverse('dyn_display', kwargs={'category': 'first'}))
from django.http import HttpResponseRedirect
return HttpResponseRedirect(reverse('dyn_display'))
def courses_display(request, category=None):
    ctx = {}
    if category:
        ctx.update({category: 'in'})
    return render_to_response('display/basic.html', ctx,    context_instance=RequestContext(request))
要获得可接收可选值的视图,您需要2个URL:

url(r'$', 'display', name='dyn_optional_display')    
url(r'(?P<category>[a-z]+)$', 'display', name='dyn_display')

反向函数不是和我在模板中使用的url标记类似的python代码吗?如果我理解正确,您的方法将查找url匹配,其中有一个要捕获的“category”组,因此它不适用于简单的url(r“$”、“display”、“name='dyn\u dysplay')。另外,我应该把python代码放在哪里,因为我要从模板中转到某个带有特定选项的页面?我唯一能看到的另一个选择是重定向,但这也应该涉及反向,我仍然认为我不能使用它将kwargs传递到视图,而不是在urlpatterns中找到匹配项。是的,我看到了。谢谢你这么快的回复。但是,请原谅,我仍然有一些麻烦为我弄明白这一点。您的所有方法都可以正常工作,但在前两种情况下,我仍然会首先获得丑陋的url some/url/first,但我会将所需的变量传递给视图,以便打开适当的容器。其他方法确实为我提供了一个很好的url some/url/,但我无法将所需的参数传递给视图,我是从urlpatterns调用的,以便扩展相应的容器。因此,您的问题是您不知道如何从url中获取值?对不起,如果我不完全理解。你想用这个部分做什么:{category:'in'}??这将设置一个与该类别相等的上下文值,这意味着您将拥有一个实际如下所示的字典:{'first':'in'}当它到达模板时,如果您想要传递该类别,您应该使用如下内容:{'category':category}不,问题是,我不知道如何在没有参数的情况下解析nice url,尽管仍然将一些参数传递给view函数?类似这样:转到url模式,该模式中不包含参数,获取它匹配的视图,并向其传递一些参数。我认为这只能通过python代码的方式完成,而不是模板。
url(r'$', 'display', name='dyn_optional_display')    
url(r'(?P<category>[a-z]+)$', 'display', name='dyn_display')
def courses_display(request, category=None):
    ctx = {}
    if category:
        ctx.update({category: 'in'})
    return render_to_response('display/basic.html', ctx,    context_instance=RequestContext(request))