2012-12-18 78 views
0

請幫忙。我得到這個錯誤:「'''與參數'()'和關鍵字參數'{}'未找到相反

Reverse for ''ev_toggle_attendance'' with arguments '()' and keyword arguments '{}' not found.

這裏是我的html文件:

{% extends "base.html" %} 

{% block title %}Tonight - {{ block.super }}{% endblock %} 

{% block main_content %} 
    <a href ="{% url ev_create %}">Create an Event</a> 
    {% if events %} 
     {% for event, attending in events %} 
      <p>{{event.creator.username}}: {{event.description}}</p> 
      {% if attending %} 
       <p> You are attending this event.</p> 
      {% else %} 
       <p> You are not attending this event. </p> 
      {% endif %} 
      <form method="POST" class="toggle_attendance_form" action="{% url ev_toggle_attendance %}"> 
       <input type="hidden" name="event_id" value="{{event.id}}"/> 
       {% if attending %} 
        <input class="attendance unattend" type="submit" value="Unattend"/> 
       {% else %} 
        <input class="attendance attend" type="submit" value="Attend"/> 
       {% endif %} 
      </form> 

     {% endfor %} 
    {% else %} 
     <p>No events for today.</p> 
    {% endif %} 
{% endblock %} 

它說的錯誤是在這裏:

<form method="POST" class="toggle_attendance_form" action="{% url ev_toggle_attendance %}"> 

urls.py文件:

from django.conf.urls import patterns, include, url 
from events import views 

urlpatterns = patterns('', 
    url(r'^create/$', views.create, name='ev_create'), 
    url(r'^tonight/$', views.tonight, name='ev_tonight'), #ev_tonight is the name of the url pattern; good for templates 
    url(r'^toggle-attendance/$', views.toggle_attendance, name='ev_toggle_attendance'), 
) 

views.py snippet:

from events.models import Event, Attendance 
from django.shortcuts import render_to_response, get_object_or_404 
from django.template import RequestContext 
from events.forms import EventForm 
from dateutil.parser import parse 
from django.core.urlresolvers import reverse 
from django.http import HttpResponseRedirect, Http404 
from django.contrib import messages 
from django.contrib.auth.decorators import login_required 


# Create your views here. 

def tonight(request): 
    events = Event.objects.today().filter(latest=True) 
    #loop thru all the events and check to see if the currently logged in user is attending the event 
    attending=[] 
    for event in events: #for every event in all the events, query for an attendance objects that matches event for the user 
     try: 
      Attendance.objects.get(event=event, user=request.user) 
      attending.append(True) 
     except Attendance.DoesNotExist: #if can't find it 
      attending.append(False) 
    context = { 
     'events':zip(events, attending), #zip function to merge event and attending 
    } 
    return render_to_response('events/tonight.html', context, 
           context_instance=RequestContext(request)) 

    #context_instance: context processors: things that get run on request and add context to it; does things like adding the user variable to the template. 

def create(request): 
    form = EventForm(request.POST or None) 
    if form.is_valid():#check if there's data as well as within the 340 characters limit 
     event = form.save(commit = False) #won't save to database coz creator isn't yet known 
     event.creator = request.user 
     guessed_date = None 
     for word in event.description.split(): #split on every space - guess the date based on things inside the description 
      try: 
       guessed_date = parse(word) 
       break#if found, break 
      except ValueError: 
       continue 
     event.start_date = guessed_date 
     event.save() #saves to the database 
     messages.add_message(request, messages.INFO, 'Your event was posted.') 
     #redirect user to another url 
     if 'next' in request.POST: #if somewhere in the post value, there's a next 
      next = request.POST['next'] 
     else: 
      next = reverse('ev_tonight') #otherwise, next will be the url with ev_tonight 
     return HttpResponseRedirect(next) 

    #if the form isn't valid 
    return render_to_response(
      'events/create.html', 
      {'form':form}, 
      context_instance = RequestContext(request)) 
create = login_required(create) #ensuring that the user logged in or can do @login_required before the create model(python >= 2.4) 

    def toggle_attendance(request): 
     try: 
      event_id = int(request.POST['event_id'])#assuming there are values in the post parameter; cast into an it 
     except (KeyError, ValueError): #raise an exception when: no event id in the post parameter or a value that could not be cast to an int 
      raise Http404 
     event = get_object_or_404(Event, id=event_id) 
     attendance, created = Attendance.objects.get_or_create(user=request.user, event=event)#calling for the user that is logged in and for the event that has already been queried for 

     if created: 
      messages.add_message(request, messages.INFO, 'You are now attending "%s"' %event) 

     else: 
      attendance.delete() 
      messages.add_message(request, messages.INFO, 'You are no longer attending "%s"' %event) 

     #checking to see if there's a next variable in the post parameter; if it isn't assign an empty string 
     next=request.POST.get('next', '') 
     if not next: #if it's the empty string 
      next=reverse('ev_tonight') 
     return HttpResponseRedirect(next) 
    toggle_attendance = login_required(toggle_attendance) 

主要的URL文件:

from django.conf.urls import patterns, include, url 

# Uncomment the next two lines to enable the admin: 
from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    url(r'^events/', include('events.urls')), 
    # Uncomment the next line to enable the admin: 
    url(r'^admin/', include(admin.site.urls)), 
) 

可以呈現非常感謝任何援助。

謝謝。

+0

這些錯誤往往很難找到。我通常禁用所有的urls.py文件,並依次啓用它們直到出現錯誤。那麼這通常是視圖本身的錯誤。 – mawimawi

+0

該錯誤應該指向一個文件發生這種情況,你可以發佈? –

+0

@RickardZachrisson,我不確定是否這是你要求:模板渲染過程中的錯誤 在模板/用戶/家庭/桌面/ Web開發/ Aptana Studio 3.0/startthedark /模板/事件/ tonight.html,錯誤在第15行 – dobleV

回答

1

嘗試從將來的模板標籤加載的網址:{% load url from future %}

changes-to-url-and-ssi

+0

我還必須在網址中添加單引號,即{%url ev_toggle_attendance%}成爲{%url'ev_toggle_attendance'%} – dobleV

+0

我們必須在django 1.4.3中執行此操作 – maazza

相關問題