Привет Я работаю с приложением двигателя проекта Google с поддержкой Django 1.5 и проблема выглядит следующим образом:Джанго, GAE NoReverseMatch ошибка
Я написал помощник декоратора, чтобы назвать свои взгляды с пользователем Google в качестве параметра :
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
Если представление требует от пользователя быть авторизованы он проверяет текущий пользователь Google, вид может не требовать его, это тот случай, он просто вызывает мнение. Теперь у меня есть новые два вида:
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>*
Строка с «страницы-справки» URL является подсвечивается 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'),
)
У вас есть пространство имен в корневом URL-адресе? – karthikr
@karthikr Я не знаю, какое пространство имен видит мое редактирование, это мои URL-адреса. – loki
и является ли это 'projecct.pages.views' действительным? – karthikr