2016-06-24 1 views
0

Я этот URL определен:Django не ударять класса View по форме Получить

url(r'^persons/(?P<id_person>P\.\d+)/forms/(?P<id_form>\w+\.\d+)/$', views.PersonFormView.as_view()) 

регулярное выражение проверяет, тестирование с помощью регулярных выражений Testor: persons/P.1/forms/D.1/

Это мой класс Вид:

class PersonFormView(APIView): 
def get(self, request, id_person, id_form, format=None): 
    form = Form.get_form_for_person(self, id_person, id_form) 
    serializer = FormSerializer(form, many=True) 
    return Response(serializer.data) 

ПОЛУЧИТЬ это не поражает Вид. Помощь очень ценится.

UPDATE: Похоже, что определения URL-адресов сталкиваются. У меня есть эти два:

url(r'^persons/(?P<id_person>P\.\d+)/forms/(?P<formacronym>\w+)/$', views.PersonFormCreateView.as_view()), 
url(r'^persons/(?P<id_person>P\.\d+)/forms/(?P<id_form>\w+\.\d+)/$', views.PersonFormView.as_view()), 

Я хотел бы быть в состоянии ударить API, с помощью этих URLs:

/persons/P.1/forms/D/ 
/persons/P.1/forms/D.1/ 

Можно ли определить 2 URL-адреса, так что я могу просмотреть с помощью 2 примера, указанные выше?

+1

Что это за удар? Вы получили сообщение об ошибке? – solarissmoke

+0

Я получаю 404: GET /persons/P.1/forms/D.1/ HTTP/1.1 "404 23 – obautista

ответ

0

Ваше регулярное выражение неверно для этого URL-адреса.

Попробуйте это вместо:

url(r'^persons/P.(?P<id_person>\d+)/forms/D.(?P<id_form>\d+)/$', some_view), 

Edit:

если второй аргумент является необязательным он должен быть объявлен с *. Нравится (не проверено):

url(r'^persons/P.(?P<id_person>\d+)/forms/D[.](?P<id_form>\d*)/$', some_view), 

Я действительно не вижу смысла добавления точек и символов D или P. Я рекомендую держать его просто, для expample:

/человек/1/форм /человек/1/Опалубка/1

Wich будет acomplished два регулярных выражением:

url(r'^persons/(?P<id_person>\d+)/forms/$', some_view), 
url(r'^persons/(?P<id_person>\d+)/forms/(?P<id_form>\d+)/$', some_view), 

плюс, в представлении аргумент id_form должен иметь значение по умолчанию.

+0

@ Dowling - это тоже не работает. – obautista

+0

Вы получаете исключение? 2. Убедитесь, что APIView определен, поскольку вы расширяете этот класс (вы должны его импортировать: из rest_framework.views импортировать APIView). –

+0

@Dowling - обратите внимание, что я обновил свой вопрос. Спасибо за помощь. – obautista

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

  • Нет связанных вопросов^_^