2009-07-15 2 views
3

Я следую учебнику Django и застрял с ошибкой в ​​части 4 урока. Я добрался до той части, где я пишу голос, который использует обратный для перенаправления на другой вид. По какой-то причине, обратный сбой за исключением следующего:Django: сбой обратной функции с исключением

импорта() аргумент 1 должен быть строкой, а не instancemethod

В настоящее время urls.py моего проекта выглядит следующим образом:

from django.conf.urls.defaults import * 
from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    (r'^polls/', include('mysite.polls.urls')), 
(r'^admin/(.*)', include(admin.site.root)), 
) 

и приложение urls.py является:

from django.conf.urls.defaults import * 

urlpatterns = patterns('mysite.polls.views', 
    (r'^$', 'index'), 
    (r'^(?P<poll_id>\d+)/$', 'details'), 
    (r'^(?P<poll_id>\d+)/results/$', 'results'), 
    (r'^(?P<poll_id>\d+)/vote/$', 'vote'), 
) 

И вид голосования: (я упростил его иметь только строку с ошибкой)

def vote(request, poll_id): 
    return HttpResponseRedirect(reverse('mysite.polls.views.results', args=(1,))) 

Когда я извлекаю администратор URLs включает от urls.py проекта, то есть превращение его в:

urlpatterns = patterns('', 
    (r'^polls/', include('mysite.polls.urls')), 
#(r'^admin/(.*)', include(admin.site.root)), 
) 

Это работает.

Я пробовал так много вещей и не могу понять, что я делаю неправильно.

ответ

6

То, как вы включаете URL-адреса администратора, несколько раз менялось по сравнению с последней версией. Вероятно, вы используете неправильные инструкции для версии Django, которую вы установили.

Если вы используете текущий багажник, то есть не официальный релиз, то документация по адресу http://docs.djangoproject.com/en/dev/ верна.

Однако, если вы используете 1.0.2, тогда вы должны перейти по ссылке вверху страницы до http://docs.djangoproject.com/en/1.0/.

+0

Genius! :) Все, что мне нужно было сделать, это изменить включение URL-адресов администратора в urlspattern: (r '^ admin /(.*)', admin.site.root), вместо: (r '^ admin/(. *) ', include (admin.site.root)), Спасибо! – arikfr

Смежные вопросы