2014-02-20 113 views
0

我有这样的看法:Django的noreversematch基于类视图

class ProfileView(UpdateView): 
    template_name = 'home/profile.html' 
    form_class = UserForm 
    success_url = '/' 

    def get_object(self, *args, **kwargs): 
     return self.request.user 

和urls.py

urlpatterns = patterns('', 
    url(r'^$', views.HomeView.as_view(), name="index"), 
    url(r'^me/$', login_required(views.ProfileView.as_view()), name="me"), 
) 

主要urls.py

urlpatterns = patterns('', 
    # Examples: 
    url(r'^$', include('demo.apps.home.urls', namespace="home")), 
) 

当我试图扭转它在模板:

<a href="{% url 'home:me' %}">My Profile</a> 

我得到NoReverseMatch错误:

Reverse for 'me' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'$me'] 
+0

这是你的主要'urls.py',抑或是从另一个模块的'urlpatterns'包括在内? – lanzz

+0

包含在我的项目中,我已经定义了namespace ='home',但是在这个问题中,我为了简单起见将它取出 –

+0

请将您主要的'urls.py'文件的内容添加到您的问题中,至少规则你在这里包含这个'urls.py'文件。 – lanzz

回答

1

你的主要urls.py只包含您的demo.apps.home.urls对于空的网址(因为这是匹配的^$)。您需要删除至少最后$

urlpatterns = patterns('', 
    # Examples: 
    url(r'^', include('demo.apps.home.urls', namespace="home")), 
) 
+0

哦,就是这样!很好的接收! –

+0

我认为如果错误信息中不包含'1模式',我会更容易找出问题:[u'$ me']' –

+0

这个错误信息正是我要求的问题如果你从另一个模块中包含你的'urls.py',那么'''必须来自某个地方。 – lanzz

0

如果包含URL使用的命名空间,你必须在URL中使用标签的命名空间(或反向功能)太:

<a href="{% url 'home:me' %}">My Profile</a> 
+0

是的,我知道这一点,请参阅我的最新更新,为了简化此问题,我已经删除了主要的urls.py。 –