代码之家  ›  专栏  ›  技术社区  ›  the_drow

对象_detail()在只输入一个关键字参数'queryset'时获得了多个值

  •  0
  • the_drow  · 技术社区  · 15 年前
    from django.conf.urls.defaults import *
    from django.conf import settings
    from Website.Blog.models import Post
    # Uncomment the next two lines to enable the admin:
    from django.contrib import admin
    admin.autodiscover()
    
    index = {
                'queryset': Post.objects.all(),
                'date_field': 'created_on',
                'template_name': 'index.html',
                'num_latest': 5
            }
    
    post =  {
                'template_name': 'index.html',
                'queryset': Post.objects.all(), # only here, what could be wrong?
                'slug': 'slug',
            }
    
    urlpatterns = patterns('',
        # Example:
        url(r'^$', 'django.views.generic.date_based.archive_index', index, name='index'),
        url(r'^post/(\S+)/$', 'django.views.generic.list_detail.object_detail', post, name='post'),
    
        # Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
        # to INSTALLED_APPS to enable admin documentation:
        # (r'^admin/doc/', include('django.contrib.admindocs.urls')),
    
        # Uncomment the next line to enable the admin:
        (r'^admin/', include(admin.site.urls))
    )
    
    
    if settings.DEBUG:
        urlpatterns += patterns('',
            (r'^css/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
            (r'^images/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.IMAGES_ROOT, 'show_indexes': True})
        )
    
    2 回复  |  直到 10 年前
        1
  •  1
  •   Daniel Roseman    15 年前

    这个 object_detail 视图已 queryset 作为第一个位置参数。所以匹配的值 (\S+) 在您的regex中,该URL被解释为queryset arg,这与您在post字典中传递的kwarg相冲突。

    如果您试图将对象_ID作为URL中的匹配元素发送,则需要使用命名组:

    url(r'^post/(?P<object_id>\S+)/$' ...
    
        2
  •  0
  •   oriadam    10 年前

    你需要添加 ?: 传递给不希望传递给视图函数的组(括号)。 这样地:

    url(r'^post/(?:\S+)/$', 'django.views.generic.list_detail.object_detail', post, name='post'),

    有关详细信息,请参阅本文: http://www.b-list.org/weblog/2007/oct/14/url-patterns/