2009-07-03 18 views
5

Nei progetti/urls.py ho:Django nominati gli URL non riconosciuti dal template tag url

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'), 
) 

E in un modello che ho:

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

Ma un errore si presenta.

TemplateSyntaxError at/

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

Il massimo che riesco a capire è che i nomi vengono trattati come visualizzazioni. Perché dovrebbe succedere?

da 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)) 

e l'urls.py principale:

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'}), 
) 

traceback:

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. 

risposta

2

Dal mio urls.py:

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

Questo punto di vista non esisteva. Mi sento stupido

3

Penso che potrebbe essere dovuto al fatto

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

entrambi si riferiscono alla stessa funzione 'sfoglia' in 'bizteen.projects.views' ma uno di loro prende un argomento (\ d +) e l'altro no. Hai specificato un parametro predefinito per la funzione? Come così

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

Se non che, ci potrebbe essere un problema nel vostro urls.py a livello di progetto (il vostro esempio sembra un estratto da un urls.py applicazione). Hai qualcosa di simile nel tuo urls.py a livello di progetto?

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

Sì, ho specificato un valore predefinito lì. Inoltre, il problema si applica a tutti i miei URL, non solo a quelli che condividono una visualizzazione. – OwenK

+0

Ho delle istruzioni di lavoro incluse, sì. anche i nomi dal mio urls.py principale non funzionano. – OwenK

+1

Puoi modificare la tua domanda e includere un estratto di dove includi projects.urls e l'intestazione della funzione bizteen.projects.views.browse? – lemonad

2

ho personnaly importare i miei vista nel mio urls.py e dare loro come secondo argomento di url() fonctions:

from myapp import views as myapp_views 

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

Evita ottenere errori di runtime, e consente di aggiungere decoratori come 'login_required':

from myapp import views as myapp_views 

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