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