我是Django的新手,我遇到了NoReverseMatch错误。有谁知道我怎么解决这个问题?
异常值:反向'profile_list.html',参数'()'和关键字参数'{}'未找到。
edit_profile.html
<h1>Add Profile</h1>
<form action="{% url 'questions-new' %}" method="POST">
{% csrf_token %}
<ul>
{{ form.as_ul }}
</ul>
<input type="submit" value="Save" />
</form>
<a href="{% url 'profile-list' %}">back to list</a>
urls.py
from django.conf.urls import patterns, include, url
import questions.views
urlpatterns = patterns('',
url(r'^$', questions.views.ListProfileView.as_view(),
name='profile-list'),
url(r'^new$', questions.views.CreateProfileView.as_view(),
name='questions-new',),
)
views.py
from django.views.generic import ListView
from questions.models import Profile
from django.core.urlresolvers import reverse
from django.views.generic import CreateView
class ListProfileView(ListView):
model = Profile
template_name = 'profile_list.html'
class CreateProfileView(CreateView):
model = Profile
template_name = 'edit_profile.html'
def get_success_url(self):
return reverse('profile_list.html')
答案 0 :(得分:5)
您的get_success_url
错了。将其更改为以下内容:
def get_success_url(self):
return reverse('profile-list')
reverse
应与您在urls.py
模式中提供的名称一起使用,而不是与模板名称一起使用。
答案 1 :(得分:2)
您的reverse
来电不正确。根据{{3}}:
reverse(viewname [,urlconf = None,args = None,kwargs = None, current_app =无])
viewname是函数名称(a 函数引用,或名称的字符串版本(如果使用) urlpatterns中的表单)或URL模式名称。
所以,替换
reverse('profile_list.html')
与
reverse('profile-list')
profile-list
是您在urls.py
中定义的网址格式名称。
希望有所帮助。