2014-02-20 155 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。 –