0
嗨,我是用的Django 1.5支持,該問題的谷歌應用程序引擎項目的工作是這樣的:的Django,GAE NoReverseMatch錯誤
我寫了一個輔助裝飾打電話給我用谷歌的用戶作爲一個參數的意見:
def login(required=True):
def _wrapper(f):
@wraps(f)
def __wrapper(request, *args, **kwargs):
user = users.get_current_user()
if required and user:
return f(request, user, *args, **kwargs)
elif required and not user:
url = users.create_login_url(request.get_full_path())
return HttpResponsePermanentRedirect(url)
elif user:
return f(request, user, None, *args, **kwargs)
else:
url = users.create_login_url(request.get_full_path())
return f(request, user, url, *args, **kwargs)
return __wrapper
return _wrapper
如果視圖需要它會檢查當前谷歌用戶登錄用戶,認爲可能不需要它,它只是調用視圖的話。現在,我已經有了新的兩種觀點:
pages.urls.py
urlpatterns = patterns('projecct.pages.views',
url(r'^help/$', 'hlp', name='pages-help'),
)
意見
@login(required=False)
def homepage(request, user, login_url):
"""
Site wide home page
"""
return render_to_response(
'pages/home.html',
{'user': user, 'login_url': login_url, })
@login(required=False)
def hlp(request, user, login_url):
return render_to_response(
'pages/help.html',
{'user': user, 'login_url': login_url})
錯誤:
NoReverseMatch at/
Reverse for 'pages-help' with arguments '()' and keyword arguments '{}' not found.
Request Method: GET
Request URL: http://localhost:8080/
Django Version: 1.5
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'pages-help' with arguments '()' and keyword arguments '{}' not found.
...
Reverse for 'pages-help' with arguments '()' and keyword arguments '{}' not found.
{% if user %}
<a href="{% url 'userprofile-show' %}">...</a>
{% else %}
<a href="{{ login_url }}">Login</a>
{% endif %}
*<a href="{% url 'pages-help' %}">...</a>*
與「頁面,幫助網址中的線是由Django
強調,aditionaly它標誌着 最後其他裝飾爲錯誤的原因的:
else:
url = users.create_login_url(request.get_full_path())
return f(request, user, url, *args, **kwargs)
假設這是錯誤的原因爲什麼在處理homepage
視圖時沒有失敗,因爲它使用相同的裝飾器和相同的參數?
而另一個名爲url 'userprofile-show'
它也使用同樣的裝飾,當它處理tamplate沒有失敗:
@login(required=True)
def show(request, current_user):
...
我的想法,任何幫助將不勝感激。
編輯。 新增urls.py
urlpatterns = patterns('',
url(r'^profile/', include('project.userprofile.urls')),
# Static pages
url(r'^pages/$', include('project.pages.urls')),
url(r'^$', 'project.pages.views.homepage', name='homepage'),
)
在root url conf中有一個名稱空間嗎? – karthikr
@karthikr我不知道命名空間是什麼看到我的編輯,這是我擁有的漏洞。 – loki
,這是'projecct.pages.views'有效嗎? – karthikr