我的做法出了什么问题?
当我发布新数据时,我希望它返回到输入文件为空的页面。但它给了我这个错误
NoReverseMatch at /school/new-school/
使用参数'()'和关键字参数'{}'找不到'new-school'的反转。尝试了0种模式:[]
这是我的模特。请注意,reverse_lazy已导入
class SchoolList(models.Model):
name = models.CharField(max_length=15, null=False)
def __str__(self):
return '%s' % (self.name)
def get_absolute_url(self):
return reverse_lazy('new-school')
这是我的url.py
url(r'^school-list/$', SchoolListtView.as_view(), name='school-list'),
url(r'^new-school/$', CreateSchoolListView.as_view(), name='new-school'),
url(r'^school(?P<pk>\d+)/update/$', SchoolListUpdate.as_view(), name='update-school')
这是我对创造的看法。
class CreateSchoolListView(CreateView):
template_name = 'school\create_form.html'
model = SchoolList
fields = ['name']
这就是我在模板中指定网址的方式。
<a href="{% url 'school:new-school' %}">Create New School</a>
<a href="{% url 'school:school-list' %}">View all Schools</a>
显示页面时,我可以单击链接,它将转到正确的页面。但是当我发布数据时,它会抛出上述错误。我已经在这几个小时,并在网上阅读了很多答案。看来我的是一个独特的案例。
答案 0 :(得分:0)
尝试将名称空间添加到get_absolute_url()。
def get_absolute_url(self):
return reverse_lazy('school:new-school')
答案 1 :(得分:0)
确保您在项目的网址中导入应用的网址,例如:
__weak SRConnection *connection = [SRConnection connectionWithURL:SIGNALR_PATH];
[connection addValue:[[NSUserDefaults standardUserDefaults] objectForKey:kAccessToken] forHTTPHeaderField:@"MyAuthentication"];
connection.received = ^(NSString * data) {
NSLog(@"%@",data);
};
connection.started = ^{
[connection send:@"hello world"];
};
[connection start];
在模板中使用名称空间,如下所示:url(r'^school/', include('school.urls', namespace="school"))
或删除命名空间:
{% url 'school:new-school' %}
在模板中使用不带名称空间的网址:url(r'^school/', include('school.urls'))
在这种情况下使用get_absolute_url会很糟糕,因为它是一个实例方法,旨在获取单个模型实例的url。
如果要将方法添加到模型中,则应使用以下内容:
{% url 'new-school' %}