object_detail () получил несколько значений для ключевого аргумента queryset при вводе только одного - PullRequest
0 голосов
/ 02 августа 2010
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 ]

1 голос
/ 02 августа 2010

Представление object_detail имеет queryset в качестве первого позиционного аргумента. Таким образом, значение, соответствующее (\S+) в вашем регулярном выражении для этого URL-адреса, интерпретируется как аргумент набора запросов, что противоречит kwarg, который вы передаете в словаре POST.

Если вы пытаетесь отправить object_id как соответствующий элемент в URL, вам нужно использовать именованную группу:

url(r'^post/(?P<object_id>\S+)/$' ...
0 голосов
/ 18 июня 2015

Вам необходимо добавить ?: в группы (скобки), которые вы не хотите передавать в функцию представления. Как это:

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

См. Эту статью для получения дополнительной информации: http://www.b -list.org / блог / 2007 / Октябрь / 14 / URL-шаблоны /

...