【问题标题】:django no reverse matchdjango没有反向匹配
【发布时间】:2012-10-21 15:28:00
【问题描述】:

好的,我在这个问题上得到了一位好心人的帮助,并想看看是否有人可以提供帮助,这是我的代码。 urls.py

urlpatterns = patterns('',

url(r'^venues/(?P<venue_id>\d+)/$','venues.views.venue', name='venue'),

views.py

def venue(request,venue_id):
venue= get_object_or_404(VenueProfile,
                           venue__pk=venue_id).select_related('venue')

return render_to_response('venues/venueprofile',{'venue',venue},
    context_instance=RequestContext(request))

模板

{% load url from future %}
{% for v in venues %}
    {% with ven=v.venue profile=v %}
<a href="{% url 'venue' venue_id=venue.pk %}">{{ven.name}}</a>

现在,当我尝试使用它时,我得到 Reverse for 'venue' 参数 '()' 和关键字参数 '{'venue_id': ''}' 找不到。有人可以在这里帮助我吗,请继续请注意,我遗漏了一些代码,例如在视图中定义的 {{venues}} 对象。

【问题讨论】:

    标签: python django web-applications


    【解决方案1】:

    venue.pk 的值是空字符串,因为它与你的正则表达式不匹配,所以没有反向匹配问题。

    {% load url from future %}
    {% for v in venues %}
        {% with ven=v.venue profile=v %}
    <a href="{% url 'venue' venue_id=venue.pk %}">{{ven.name}}</a> # Problem is that venue.pk is empty string
    

    使用参数 '()' 和关键字参数反转 'venue' '{'venue_id': ''}' 检查这里的venue_id值是''。

    【讨论】:

      【解决方案2】:

      您模板中的venue 对象不存在,因此它没有pk。在您的模板中,您也没有传递任何 venues 对象。也许稍微简化你的代码会有所帮助:

      稍微调整一下你的视图方法:

      from django.shortcuts import render
      
      def venue(request,venue_id):
          the_venue = get_object_or_404(Venue,pk=venue_id)
          return render(request,'venues/venueprofile',{'venue',the_venue})
      

      您的模板:

      {% load url from future %}
      <a href="{% url 'venue' venue_id=venue.pk %}">{{venue.name}}</a>
      

      【讨论】:

        【解决方案3】:

        替换

        {% url 'venue' venue_id=venue.pk %}
        

        {% url 'venue' venue_id=ven.pk %}
        

        【讨论】:

          猜你喜欢
          • 2017-04-25
          • 1970-01-01
          • 1970-01-01
          • 2021-01-26
          • 2018-12-03
          • 2021-11-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多