2016-07-02 2 views
2

У меня возникла проблема с моим проектом django. Он заключается в следующем: у меня был простой регулярное выражение, чтобы соответствовать пользователямDjango _view_() принимает 1 позиционный аргумент, но 2 дано

url(r'^users/\w+/$', views.user) 

И это сработало отлично.

Тогда я изменил regexpt, потому что было обновление в логины пользователей, так что теперь (я добавил символ точка):

url(r'^users/([a-zA-Z0-9.]+)/$', views.user) 

А теперь я получаю «пользователь() принимает 1 позиционный аргумент, но 2 даны «ошибка django.

мнение определяется следующим образом:

def user(request): 
    return render(request, 'home/user_page.html') 
+0

Не вы когда-либо использовать изменяющуюся часть URL ('[A-Za -Z0-9.] + ') В вашем коде? Запросить базу данных или что-то еще? – aumo

ответ

7

Как указано в сообщении об ошибке, на ваш взгляд необходимо принять второй параметр:

def user(request, second_param): 
    return render(request, 'home/user_page.html') 

Это потому, что вы добавили группу в regex (часть между скобками) и Django передает любую согласованную группу в качестве аргументов для представления.

Если вы предпочитаете предыдущее поведение, удалить скобки из вашего регулярного выражения:

r'^users/[a-zA-Z0-9.]+/$' 

Соответствующая документация: https://docs.djangoproject.com/en/1.9/topics/http/urls/#how-django-processes-a-request

+1

Чем вы очень! Действительно решил случай :-) –

Смежные вопросы