为Django 1.5反向传递视图的kwargs

2024-04-29 07:03:46 发布

您现在位置:Python中文网/ 问答频道 /正文

作为一名django初学者,我有一个小问题要处理:

html代码:

<li><a href="{% url 'dyn_display' category='first'%}">first</a></li>
<li><a href="{% url 'dyn_display' category='second'%}">second</a></li>
<li><a href="{% url 'dyn_display' category='third'%}">third</a></li>

urlconf.py公司

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

视图.py

def courses_display(request, category):
    return render_to_response('display/basic.html', {category: 'in'}, context_instance=RequestContext(request))

最后是basic.html的一部分,所以您可以考虑一下为什么我需要这个category变量

基本.html

<div class="accordion" id="accordion2">
    <div class="accordion-group">
        <div class="accordion-heading">
            <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseFirst">
                <strong>First</strong>
            </a>
        </div>
        <div id="collapseFirst" class="accordion-body collapse {{ first }}">
             <div class="accordion-inner">
                 ...
             </div>
         </div>
     </div>
     <div class="accordion-group">
         <div class="accordion-heading">
             <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseSecond">
                 <strong>Second</strong>
             </a>
         </div>
         <div id="collapseSecond" class="accordion-body collapse {{ second }}">
             <div class="accordion-inner">
                 ...
             </div>
         </div>
     </div>
     <div class="accordion-group">
         <div class="accordion-heading">
             <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseThird">
                 <strong>Third</strong>
             </a>
         </div>
         <div id="collapseThird" class="accordion-body collapse {{ third }}">
             <div class="accordion-inner">
                 ...
             </div>
         </div>
      </div>
  </div>

因为整个页面都是用bootstrap和Jquery完成的,所以url的最后部分

一些/url/首先

一些/url/

一些/url/第三个

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

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


Tags: dividurldatahtmldisplayliclass
1条回答
网友
1楼 · 发布于 2024-04-29 07:03:46

你可以用这个:

如果这是你的网址:

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

要重定向,可以在视图中这样使用它:

from django.http import HttpResponseRedirect
return HttpResponseRedirect(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'))

要获得可接收可选值的视图,您需要2个URL:

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))

相关问题 更多 >