1

У меня есть в моем проекте в главном urls.py файле следующее:Джанго Rest Framework - главный URL HTTP/1.1" 404 Not Found

# REST Framework packages 
from rest_framework import routers 
router = routers.DefaultRouter() 

# ... My viewsets serialized 
router.register(r'users', UserViewSet) 
# ... Another viewsets 
urlpatterns = [ 

    url(r'^$', HomeView.as_view(), name='home'), 
    # Home url in my project   

    url(r'^', include('userprofiles.urls')), 
    # Call the userprofiles/urls.py application 

    url(r'^pacientes/', include('userprofiles.urls', namespace='pacientes')), 
    # Patients url 

    url(r'^api/', include(router.urls)), 
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')) 
    # Rest frameworks urls 
] 

До здесь, когда я печатаю в моем браузере вызова на мой локальный сервер http://localhost:8000/api/ я получаю это как ответ:

[08/Dec/2016 16:39:42] "GET /api/ HTTP/1.1" 200 7084 

И мой REST url's сериализованные модели появляются

После, я создал один URL-адрес дополнение Аль в userprofiles/urls.py применении с некоторым регулярным выражением этого пути:

from .views import PatientDetail 
urlpatterns = [ 
    url(r'^(?P<slug>[\w\-]+)/$', PatientDetail.as_view(), name='patient_detail'), 

] 

И, когда я иду в http://localhost:8000/api/ я получаю такой ответ:

Not Found: /api/ 
[08/Dec/2016 16:42:26] "GET /api/ HTTP/1.1" 404 1753 

Мой отдых Каркасы URL не найден и в моем браузере , означают, что URL-адрес, который называют в PatientDetailView происхождение этой проблемы:

enter image description here

Мой Patien tDetailView имеет следующее:

class PatientDetail(LoginRequiredMixin, DetailView): 
    model = PatientProfile 
    template_name = 'patient_detail.html' 
    context_object_name = 'patientdetail' 

    def get_context_data(self, **kwargs): 
     context=super(PatientDetail, self).get_context_data(**kwargs) 
    # And other actions and validations here in forward ... 

В моих регулярных выражениях, определенных в userprofiles/urls.py я делаю:

url(r'^(?P<slug>[\w\-]+)/$', PatientDetail.as_view(), name='patient_detail') 

Модели PatientProfile есть поле пробкового (имя пользователя пациента). Я передаю эту пулю в URL.

Кроме того, я хочу, чтобы у меня были символы буквенных символов в верхнем и нижнем регистре с параметром [\w\-], а также с символами подчеркивания и дефиса и много раз.

Возможно ли, что мое регулярное выражение может быть источником проблемы? Что может случиться по отношению к моему /api django-restframework url не найден?

ответ

1

api является полным совпадением для регулярного выражения [\w\-]+, используемого в 'userprofiles.urls'. Поэтому, когда вы вводите http://localhost:8000/api/, Django возвращает сначала найденный urlpattern, который равен url(r'^', include('userprofiles.urls')). Попробуйте подкачки:

url(r'^pacientes/', include('userprofiles.urls', namespace='pacientes')), 
# Patients url 
url(r'^api/', include(router.urls)), 
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')) 
url(r'^', include('userprofiles.urls')), 
1

Порядок, в котором вы указываете свои URL-адреса. Django пытается сопоставить ваш URL с каждым шаблоном, пока один из них не совпадет.

Обратите внимание, что вы включили эту строку:

url(r'^', include('userprofiles.urls')), 

перед:

url(r'^api/', include(router.urls)), 

, который не является проблемой, так как первая модель, чтобы соответствовать был последним.

Однако, когда вы добавили PatientDetail вид URL-шаблон:

url(r'^(?P<slug>[\w\-]+)/$', PatientDetail.as_view(), name='patient_detail') 

/api/ был матч. Таким образом, был вызван вид PatientDetail и произошла ошибка 404, потому что не найдено ни одного пациента с именем пользователя api, а не потому, что URL-адрес не найден.

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

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