2009-07-03 17 views
5

En proyectos/urls.py tengo:URLs Django nombrados no reconocidos por las etiquetas URL de la plantilla

urlpatterns = patterns('bizteen.projects.views', 
    url(r'^browse/$', 'browse', name='projects-browse-main'), 
    url(r'^browse/(\d+)/$', 'browse', name='projects-browse'), 
    url(r'^create/$', 'create', name='projects-create'), 
    url(r'^(\d+)/$', 'view_project', name='projects-view'), 
) 

Y en una plantilla que tengo:

<a href="{% url projects-browse-main %}">Browse projects</a> 

Pero un error aparezca.

TemplateSyntaxError at/

Caught an exception while rendering: Reverse for 'bizteen.projects-browse-main' with arguments '()' and keyword arguments '{}' not found. 

Lo único que puedo deducir es que los nombres se están tratando como vistas. ¿Por qué sucedería esto?

de bizteen.projects.views:

from django.shortcuts import render_to_response 
from django.http import HttpResponse, HttpResponseRedirect 
from bizteen.projects.models import Project, ProjectComment 
from django.template import RequestContext 

def browse(request, page=0): 
    page_start = page * 25 
    page_end = page_start + 25 
    project_list = Project.objects.order_by('date_created').reverse([page_start:page_end] 
    return render_to_response('browse_projects.html', {'project_list': project_list}, context_instance=RequestContext(request)) 

y la urls.py principal:

from django.conf.urls.defaults import * 

from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    (r'^users/', include('bizteen.userthings.urls')), 
    (r'^projects/', include('bizteen.projects.urls')), 
    url(r'^$', 'bizteen.userthings.views.home', name='main-home'), 

    url(r'^profile/$', 'bizteen.userthings.user-profile'), 

    url(r'^admin/doc/', include('django.contrib.admindocs.urls')), 
    url(r'^admin/(.*)', admin.site.root), 

    url(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', 
     {'document_root': 'templates/static'}), 
) 

rastreo:

Environment: 

Request Method: GET 
Request URL: http://127.0.0.1:8000/ 
Django Version: 1.0.2 final 
Python Version: 2.5.1 
Installed Applications: 
['django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.admin', 
'bizteen.userthings', 
'bizteen.projects'] 
Installed Middleware: 
('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware') 


Template error: 
In template /Users/xenon/bizteen/trunk/web/bizteen/templates/base.html, error at line 33 
    Caught an exception while rendering: Reverse for 'bizteen.main-home' with arguments '()' and keyword arguments '{}' not found. 
    23 :   <div class="span-24"> 


    24 :     <div class="span-10">&nbsp; </div> 


    25 :     <div class="span-8"> 


    26 :      <div id='quick_user_menu'> 


    27 :       <b>Hi there!</b> 


    28 :       {% if user.is_authenticated %} 


    29 :       <b><a href="{{ user.get_absolute_url }}">{{ user.username }}</a></b> 


    30 :        <a href='/user/home/' class='lightblue'>Dashboard</a> | 


    31 :        (<a href='/user/logout/' class='anchor'>logout</a>) 


    32 :       {% else %} 


    33 :       <a href=' {% url main-home %} ' class='lightblue' rel='facebox'>Sign In</a> 


    34 :       (<a href='/user/signup/' class='anchor'>Don't have an account?</a>) 


    35 :       


    36 :       {% endif %} 


    37 :      </div> 


    38 :     </div> 


    39 :   </div> 


    40 :   <div class="span-24"> 


    41 :    <div id='header'> 


    42 :     <div class="span-8"> 


    43 :      <A href='/user/home/'><img src='http://localhost:8000/site_media/images/logo.png' alt='BizTeen logo image' align='left'/></a> 


Traceback: 
File "/Library/Python/2.5/site-packages/django/core/handlers/base.py" in get_response 
    86.     response = callback(request, *callback_args, **callback_kwargs) 
File "/Users/xenon/bizteen/trunk/web/bizteen/../bizteen/userthings/views.py" in home 
    29.  return render_to_response('home.html', context_instance=RequestContext(request)) 
File "/Library/Python/2.5/site-packages/django/shortcuts/__init__.py" in render_to_response 
    18.  return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs) 
File "/Library/Python/2.5/site-packages/django/template/loader.py" in render_to_string 
    107.  return t.render(context_instance) 
File "/Library/Python/2.5/site-packages/django/template/__init__.py" in render 
    176.   return self.nodelist.render(context) 
File "/Library/Python/2.5/site-packages/django/template/__init__.py" in render 
    768.     bits.append(self.render_node(node, context)) 
File "/Library/Python/2.5/site-packages/django/template/debug.py" in render_node 
    71.    result = node.render(context) 
File "/Library/Python/2.5/site-packages/django/template/loader_tags.py" in render 
    97.   return compiled_parent.render(context) 
File "/Library/Python/2.5/site-packages/django/template/__init__.py" in render 
    176.   return self.nodelist.render(context) 
File "/Library/Python/2.5/site-packages/django/template/__init__.py" in render 
    768.     bits.append(self.render_node(node, context)) 
File "/Library/Python/2.5/site-packages/django/template/debug.py" in render_node 
    71.    result = node.render(context) 
File "/Library/Python/2.5/site-packages/django/template/defaulttags.py" in render 
    246.    return self.nodelist_false.render(context) 
File "/Library/Python/2.5/site-packages/django/template/__init__.py" in render 
    768.     bits.append(self.render_node(node, context)) 
File "/Library/Python/2.5/site-packages/django/template/debug.py" in render_node 
    81.    raise wrapped 

Exception Type: TemplateSyntaxError at/
Exception Value: Caught an exception while rendering: Reverse for 'bizteen.main-home' with arguments '()' and keyword arguments '{}' not found. 

Original Traceback (most recent call last): 
    File "/Library/Python/2.5/site-packages/django/template/debug.py", line 71, in render_node 
    result = node.render(context) 
    File "/Library/Python/2.5/site-packages/django/template/defaulttags.py", line 378, in render 
    args=args, kwargs=kwargs) 
    File "/Library/Python/2.5/site-packages/django/core/urlresolvers.py", line 254, in reverse 
    *args, **kwargs))) 
    File "/Library/Python/2.5/site-packages/django/core/urlresolvers.py", line 243, in reverse 
    "arguments '%s' not found." % (lookup_view, args, kwargs)) 
NoReverseMatch: Reverse for 'bizteen.main-home' with arguments '()' and keyword arguments '{}' not found. 

Respuesta

2

Desde mi urls.py:

url(r'^profile/$', 'bizteen.userthings.user-profile'), 

Ese punto de vista no existiera. Me siento tonto.

3

Creo que puede ser porque

url(r'^browse/$', 'browse', name='projects-browse-main'), 
url(r'^browse/(\d+)/$', 'browse', name='projects-browse'), 

ambos se refieren a la misma función 'navegar' en 'bizteen.projects.views' pero uno de ellos toma un argumento (\ d +) y el otro no. ¿Ha especificado un parámetro predeterminado para la función? Al igual que

def browse(request, project="1"): 

Si no es eso, puede haber un problema en su urls.py todo el proyecto (el ejemplo se ve como un extracto de un urls.py aplicación). ¿Tiene algo así en su urls.py de todo el proyecto?

urlpatterns = patterns('', 
    (r'^project/', include('bizteen.project.urls)) 
) 
+0

Sí, he especificado un valor predeterminado allí. Además, el problema se aplica a todas mis URL, no solo a las que comparten una vista. – OwenK

+0

Tengo trabajo incluye declaraciones, sí. los nombres de mi urls.py principal tampoco funcionan. – OwenK

+1

¿Puedes editar tu pregunta e incluir un extracto de dónde incluyes projects.urls y el encabezado de la función bizteen.projects.views.browse? – lemonad

2

mis importaciones personnaly mi punto de vista en mi urls.py y darles como segundo argumento de url() fonctions:

from myapp import views as myapp_views 

urlpatterns = patterns('', 
    url("^myapp/blah/$", myapp_views.blah, name="myapp_blah"), 
) 

Evita obtener los errores de ejecución, y le permite añadir decoradores como 'login_required':

from myapp import views as myapp_views 

urlpatterns = patterns('', 
    url("^myapp/blah/$", login_required(myapp_views.blah), name="myapp_blah"), 
) 
Cuestiones relacionadas