>  기사  >  백엔드 개발  >  Django 프레임워크의 정규식 URL에 대한 오해

Django 프레임워크의 정규식 URL에 대한 오해

小云云
小云云원래의
2018-01-29 09:38:321834검색

Django를 사용하여 웹 사이트를 개발하면 매우 아름다운 URL 규칙을 디자인할 수 있습니다. URL 일치 규칙(정규 표현식 포함)이 더 잘 구성되어 있으면 보기 구조가 더 명확하고 유지 관리가 더 쉬워집니다. 하지만 아래에 몇 가지 오해가 있을 수 있습니다. 모든 사람에게 유용하길 바랍니다.

질문:

제가 공부한 영상은 아마도 2015년에 녹화된 것 같습니다. 여기에 사용된 Django 버전은 비교적 오래된 정규식 URL로 URL("url(r'^admin/', admin.site)을 사용합니다. .urls),") 메서드입니다. 제가 직접 연습할 때 최신 버전을 다운로드했는데, 정규식 URL은 정확한 경로("path('admin/', admin.site.urls),") 방식을 사용했습니다. 처음에는 한 쌍이 매칭되면 성공했기 때문에 이런 디테일에는 그다지 신경을 쓰지 않았습니다.

나중에 여러 개의 일반 일치 항목이 일치할 때(path('detail-(d+).html', views.detail),), "페이지를 찾을 수 없음" 오류가 항상 보고됩니다. 여러 번 확인해 보니 분명히 똑같습니다. 왜 작동하지 않습니까? 사실 색이 좀 촌스러운 느낌이 들던데 왜인지는 모르겠습니다. 나중에 관련 버전 문서를 확인한 결과 마침내 해결책을 찾았습니다!

관련 코드는 아래 첨부합니다.

1. 가장 중요한 py 파일이고 나머지는 거의 동일합니다.

2. 기타 관련 코드:

views.py

def detail(request,nid):
 # print(nid)
 # return HttpResponse(nid)
 detail_info = USER_DICT[nid]
 return render(request,'detail.html',{'detail_info':detail_info})

index.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>
 <ul>
  {% for k,v in user_dict.items %}
   <li><a target="_blank" href="/detail-{{ k }}.html" rel="external nofollow" >{{ v.name }}</a></li>
  {% endfor %}
 </ul>
</body>
</html>

detail.py

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>
 <h1>详细信息</h1>
 <h6>用户名:{{ detail_info.name }}</h6>
 <h6>邮箱:{{ detail_info.email }}</h6>
</body>
</html>

또한 URL이 여러 데이터를 전달해야 하는 경우 엄격하게 순서대로 전달해야 합니다. , 그리고 함수 정의에는 해당하는 수의 매개변수가 있어야 합니다. 물론 범용 매개변수를 사용하여 원하는 수의 참가자를 받을 수 있습니다. 일반적인 상황에서 사용되는 정규식은 url(r'^detail-(?P

해당 세부 함수는 다음과 같습니다: def Detail(request, *args, **kwargs):pass

관련 추천:


Django 프레임워크 기반 웹사이트 배포에 대한 자세한 설명

위 내용은 Django 프레임워크의 정규식 URL에 대한 오해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.