2009-07-03 20 views
5

परियोजनाओं में यूआरएल/urls.py मेरे पास है:Django नामित टेम्पलेट यूआरएल टैग द्वारा अपरिचित

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

और एक टेम्पलेट में मेरे पास है:

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

लेकिन एक त्रुटि दिखाई देता है।

TemplateSyntaxError at/

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

सबसे ज्यादा मुझे पता चल सकता है कि नामों को इसके बजाय विचारों के रूप में माना जा रहा है। ऐसा क्यों होगा?

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

और मुख्य urls.py:

bizteen.projects.views से

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

ट्रैस बैक:

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. 

उत्तर

2
मेरी urls.py से

:

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

वह दृश्य मौजूद नहीं था। मुझेमूक होने का अनुभव हो रहा है।

3

मुझे लगता है कि यह हो सकता है क्योंकि

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

दोनों 'bizteen.projects.views' में एक ही फ़ंक्शन 'ब्राउज़' का संदर्भ लें, लेकिन उनमें से एक तर्क (\ d +) लेता है और दूसरा नहीं करता है। क्या आपने फ़ंक्शन के लिए डिफ़ॉल्ट पैरामीटर निर्दिष्ट किया है? जैसा तो

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

यदि नहीं कि, आपकी परियोजना चौड़ा urls.py में एक समस्या हो सकती है (अपने उदाहरण एक आवेदन urls.py से एक अंश की तरह दिखता है)। क्या आपके पास अपने प्रोजेक्ट-वाईड urls.py में ऐसा कुछ है?

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

हां, मैंने वहां एक डिफ़ॉल्ट निर्दिष्ट किया है। इसके अतिरिक्त, समस्या मेरे सभी यूआरएल पर लागू होती है, न कि केवल एक दृश्य साझा करने वाले। – OwenK

+0

मैं काम कर रहा है बयान शामिल हैं, हाँ। मेरे मुख्य urls.py से नाम या तो काम नहीं करते हैं। – OwenK

+1

क्या आप अपना प्रश्न संपादित कर सकते हैं और इसमें शामिल हैं जहां आप Project.urls और bizteen.projects.views.browse फ़ंक्शन का शीर्षलेख शामिल करते हैं? – lemonad

2

मैं personnaly मेरे विचार आयात मेरी urls.py में और (यूआरएल के दूसरे तर्क के रूप में उन्हें दे) fonctions:

from myapp import views as myapp_views 

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

यह क्रम त्रुटियों हो रही से बचा जाता है, और आप की तरह 'login_required' सज्जाकार जोड़ने के लिए अनुमति देता है:

from myapp import views as myapp_views 

urlpatterns = patterns('', 
    url("^myapp/blah/$", login_required(myapp_views.blah), name="myapp_blah"), 
) 
संबंधित मुद्दे