template examples python django

python - django templates examples



Django error de atributo. ''módulo'' objeto no tiene atributo ''rindex'' (4)

Acabo de empezar a usar django, solo en el capítulo 3 del libro en línea.

Sigo recibiendo este error extraño cuando intento acceder al sitio.

El objeto AttributeError at / test / ''module'' no tiene atributo ''rindex''

mi url.py es solo

from django.conf.urls.defaults import * from mysite import hello # Uncomment the next two lines to enable the admin: # from django.contrib import admin # admin.autodiscover() urlpatterns = patterns('''', (''^test/$'',hello), )

y mi función de saludo está en mi sitio. Camino de Python es

[''/home/james/django/mysite'', ''/usr/lib/python2.6'', ''/usr/lib/python2.6/plat-linux2'', ''/usr/lib/python2.6/lib-tk'', ''/usr/lib/python2.6/lib-old'', ''/usr/lib/python2.6/lib-dynload'', ''/usr/local/lib/python2.6/dist-packages'', ''/usr/lib/python2.6/dist-packages'', ''/usr/lib/python2.6/dist-packages/PIL'', ''/usr/lib/pymodules/python2.6'', ''/usr/lib/python2.6/dist-packages/gtk-2.0'', ''/usr/lib/pymodules/python2.6/gtk-2.0'', ''/home/james/django'']

Realmente no entiendo qué está pasando aquí. Supongo que estoy pasando por alto algo estúpido, porque parece muy sencillo. Cuando lo hago desde mysite, hola en el intérprete de python, no genera ningún error.

cualquier ayuda seria genial

editar: rastrear

Environment: Request Method: GET Request URL: http://127.0.0.1:8000/test/ Django Version: 1.2.3 Python Version: 2.6.6 Installed Applications: [''django.contrib.auth'', ''django.co ntrib.contenttypes'', ''django.contrib.sessions'', ''django.contrib.sites'', ''django.contrib.messages''] Installed Middleware: (''django.middleware.common.CommonMiddleware'', ''django.contrib.sessions.middleware.SessionMiddleware'', ''django.middleware.csrf.CsrfViewMiddleware'', ''django.contrib.auth.middleware.AuthenticationMiddleware'', ''django.contrib.messages.middleware.MessageMiddleware'') Traceback: File "/usr/lib/pymodules/python2.6/django/core/handlers/base.py" in get_response 91. request.path_info) File "/usr/lib/pymodules/python2.6/django/core/urlresolvers.py" in resolve 217. sub_match = pattern.resolve(new_path) File "/usr/lib/pymodules/python2.6/django/core/urlresolvers.py" in resolve 123. return self.callback, args, kwargs File "/usr/lib/pymodules/python2.6/django/core/urlresolvers.py" in _get_callback 134. mod_name, func_name = get_mod_func(self._callback_str) File "/usr/lib/pymodules/python2.6/django/core/urlresolvers.py" in get_mod_func 78. dot = callback.rindex(''.'') Exception Type: AttributeError at /test/ Exception Value: ''module'' object has no attribute ''rindex''

hola la función es

from django.http import HttpResponse def hello(request): return HttpResponse("Hello world")


El patrón de url debe ser tuplas de cadenas, no un módulo. Algo como:

urlpatterns = patterns('''', (''^test/$'',''hello.views.hello''), )

EDITAR: También puede pasar un llamable a los patrones. Simplemente nunca lo había visto hecho de esa manera (los documentos siempre pasan una cadena). Sin embargo, en realidad está pasando un módulo, no una cadena o un nombre que se puede llamar (por lo que django se confunde y primero lo trata como si fuera un objeto que se puede llamar, ya que no es una cadena pero luego vuelve a intentar tratarlo como una cadena , por lo tanto La llamada a rindex ). Tal vez quisiste pasar hello.views.hello como así:

urlpatterns = patterns('''', (''^test/$'',hello.views.hello), )

Alternativamente, puede cambiar su línea de importación from mysite.hello.views import hello , o simplemente usar la sintaxis de la cadena (creo que ''hello.views.hello'' lo haría como se sugirió inicialmente).


Probablemente necesitas cambiar

from mysite import hello

a algo como

from mysite.hello_file import hello_view

Y luego usar:

(''^test/$'',hello_view)

Porque necesita pasar una función (ver), no un archivo o módulo. Como creo que mgalgs estaba tratando de explicar, pero me parece un poco confuso para los principiantes.


Prueba esto

urlpatterns = patterns('''', (''r^test/$'',''hello.views.hello''), )


Recibí este error al agregar una Vista basada en clase de la siguiente manera:

url(r''^tv/$'', views.MyTemplateView(), name=''my_tv''),

por supuesto .as_view() debe agregarse para corregir el error, el object has no attribute ''rindex'' :

url(r''^tv/$'', views.MyTemplateView.as_view(), name=''my_tv''),