【问题标题】:How to fix a NoReverseMatch in django?如何在 django 中修复 NoReverseMatch?
【发布时间】:2012-10-01 01:51:06
【问题描述】:

当我在页面上运行我的 django 应用程序时出现以下错误

"partner/buzzfeed/": NoReverseMatch at /partner/BuzzFeed/ Reverse for 'video_player' with arguments '('BuzzFeed', 'fXkqhhIlOtA', 'NY Yankees: 6 Essential Pieces of Postseason Memorabilia')' and keyword arguments '{}' not found.

看起来从模板传递了正确的变量,但没有与 url 正确匹配(我认为)。关于如何修复它的任何建议?

views.py

def partner_channel(request,partner_name):
    file = urllib2.urlopen('http://gdata.youtube.com/feeds/api/users/'+partner_name+'/uploads?v=2&max-results=50')
    data = file.read()
    file.close()        
    root = etree.fromstring(data)       
    entries = root.findall('{http://www.w3.org/2005/Atom}entry')        
    feed=[]
    i=0 #for feed list tracking
    for entry in entries:
        #find media:group
        media = entry.find('{http://search.yahoo.com/mrss/}group')      
        #get description, title, thumbnail
        desc = media.find('{http://search.yahoo.com/mrss/}description').text
        title = media.find('{http://search.yahoo.com/mrss/}title').text
        thumbnail = media.find('{http://search.yahoo.com/mrss/}thumbnail[2]').attrib.get("url")
        video = media.find('{http://gdata.youtube.com/schemas/2007}videoid').text
        author = entry.find('{http://www.w3.org/2005/Atom}author').find('{http://www.w3.org/2005/Atom}name').text
        feed.append([i,title, desc, thumbnail, video, author, url])     
        i=i+1       
    return render_to_response('reserve/templates/partner.html', {'feed':feed},
        context_instance=RequestContext(request))

def video_player(request,author,video,title):   
    return render_to_response('reserve/templates/video_player.html', {'author':author, 'video':video, 'title':title},
        context_instance=RequestContext(request))

模板

{% for video in feed %}    
    <a href="{% url video_player feed.1.5 video.4 video.1   %}" >Link</a>
{% endfor %}

urls.py

urlpatterns = patterns('reserve.views',
    url(r'^partner/(?P<partner_name>[-\w]+)/$', 'partner_channel'),
    url(r'^partner/(?P<author>[-\w]+)/(?P<video>[-\w]+)/(?P<video_title>[-\w]+)/$', 'video_player'),
    url(r'^partner/(?P<author>[-\w]+)/(?P<video>\w+)/(?P<title>\w+)/$', 'video_player'),
)

【问题讨论】:

    标签: python django templates view django-urls


    【解决方案1】:

    您可以做以下两件事之一:

    在模板中,改变

    {% url video_player feed.1.5 video.4 video.1 %}

    {% url reserve.views.video_player feed.1.5 video.4 video.1 %}

    或者:

    为网址添加名称:

    url(r'^partner/(?P&lt;author&gt;[-\w]+)/(?P&lt;video&gt;[-\w]+)/(?P&lt;video_title&gt;[-\w]+)/$', 'video_player', name="video-player"),

    并将模板调用更改为

    {% url video-player feed.1.5 video.4 video.1 %}

    【讨论】:

    • 当我更改模板时,我收到错误:Reverse for 'reserve.views.video_player' with arguments '('BuzzFeed', 'fXkqhhIlOtA', 'NY Yankees: 6 Essential Pieces of Postseason Memorabilia ')' 和关键字参数 '{}' 未找到。当我恢复模板并更改 url/模板(第二个选项)时: NoReverseMatch at /partner/BuzzFeed/ Reverse for 'video-player' with arguments '('BuzzFeed', 'fXkqhhIlOtA', 'NY Yankees: 6 Essential Pieces of Postseason Memorabilia')' 和关键字参数 '{}' 未找到。
    • feed.1.5video.4 等如果是字符串则需要在 ''
    • 当我在模板中执行 'feed.1.5' 'video.4' 和 'video.1' 时,我得到与上述相同的错误,结尾为:'(u'feed.1.5',未找到 u'video.4'、u'video.1')' 和关键字参数“{}”。
    • 1 sec.. 你需要修改你的正则表达式。您的正则表达式只接受 - 和字母数字。您需要修改它以接受 .
    • 在我传递的数据中('NY Yankees: 6 Essential Pieces of Postseason Memorabilia),没有句号,但有一个“:”。如何更改我的正则表达式以允许这样做?
    猜你喜欢
    • 2017-11-17
    • 2018-08-12
    • 1970-01-01
    • 2017-11-26
    • 2017-12-12
    • 2020-12-05
    • 1970-01-01
    • 2019-06-25
    相关资源
    最近更新 更多