Django 곤로
16769 단어 django
라우팅이란 사용자가 요청한 URL 링크에 따라 해당 프로세서를 판단하고 처리 결과를 반환하는 것입니다. 즉, URL이 Django의 보기와 매핑 관계를 맺는 것입니다.
Django 경로는 urls에 있습니다.py 구성, urls.py의 모든 설정은 상응하는 처리 방법에 대응한다.
Django 다른 버전 urls.py 설정이 좀 달라요.
from django.conf.urls import url # url
urlpatterns = [
url(r'^admin/$', admin.site.urls),
url(r'^index/$', views.index), #
url(r'^articles/([0-9]{4})/$', views.articles), #
]
from django.urls import re_path # re_path
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', views.index), #
re_path(r'^articles/([0-9]{4})/$', views.articles), #
]
주:2.2.x버전에서도 URL () 방법을 사용할 수 있습니다
정규 경로의 그룹
views에서 Request를 제외한 다른 인삼의 수량은 urls의 그룹 수량과 일치합니다.
# urls.py
urlpatterns = [
path('admin/', admin.site.urls),
re_path("^index/([0-9]{4})/$", views.index),
]
# views.py
from django.shortcuts import HttpResponse
def index(request,year):
print(year) # ,
return HttpResponse('hello world')
(?P< > )
유명 그룹은 키워드에 따라 참조를 전달하고 위치 순서와 무관하다
# urls.py
urlpatterns = [
path('admin/', admin.site.urls),
re_path("^index/(?P[0-9]{4})/(?P[0-9]{2})/$" , views.index),
]
# views.py
from django.shortcuts import HttpResponse
def index(request, year, month):
print(year, month) # ,
return HttpResponse('hello world')
라우팅 배포
모든 app 디렉터리가 자신의 urls를 단독으로 가지도록 루트 배달 (include) 을 사용합니다.
단계:
from django.contrib import admin
from django.urls import path,include # django.urls include
urlpatterns = [
path('admin/', admin.site.urls),
path("app01/", include("app01.urls")),
path("app02/", include("app02.urls")),
]
각 app 디렉터리에 자신의 urls를 쓰십시오.py 파일, 경로 이동.
# app01
from django.urls import path,re_path
from app01 import views # app views
urlpatterns = [
re_path(r'^login/(?P[0-9]{2})/$' , views.index, ),
]
역해석
기능의 증가로 인해 이전의 URL에 변화가 발생하면 대응하는 시청층과 모듈층의 URL을 변경해야 하기 때문에 매우 번거롭고 유지하기 불편하다.
이 문제는 역방향 해석을 이용하여 해결할 수 있다. 루트 URL이 바뀌면 보기 층과 템플릿 층에서 변경된 URL을 동적 역방향으로 해석하여 수정 작업을 면할 수 있다.
역방향 분석은 일반적으로 템플릿의 하이퍼링크와 보기의 방향을 바꾸는 데 사용된다.
path("login1/", views.login, name="login")
views에서.py에서,django.urls에reverse를 도입하여reverse('루트 별명')를 이용하여 역해석
return redirect(reverse("login"))
템플릿templates의 HTML 파일에서 {% url "루트 이름"%}을 사용하여 역으로 해석합니다.
<form action="{% url 'login' %}" method="post">
re_path(r"^login/([0-9]{2})/$", views.login, name="login")
views에서.py에서reverse('루트 별명',args=(정규에 일치하는 매개 변수,)를 이용하여 역해석
return redirect(reverse("login",args=(10,)))
템플릿templates의 HTML 파일에서 {% url '루트 별명' 을 사용하여 정규와 일치하는 인자%} 역해석
<form action="{% url 'login' 10 %}" method="post">
re_path(r"^login/(?P[0-9]{4})/$" , views.login, name="login")
views에서.py에서reverse('루트 별명', kwargs={'그룹 이름': 정규에 일치하는 매개 변수})를 이용하여 역해석
return redirect(reverse("login", kwargs={"year":3333}))
템플릿templates의 HTML 파일에서 {% url '루트 별명' 을 이용하여 그룹 이름 = 정규와 일치하는 인자%}를 역해석합니다.
<form action="{% url 'login' year=3333 %}" method="post">
네임스페이스
네임스페이스(영어: Namespace)는 식별자의 가시 범위를 나타냅니다.
이름 공간을 사용하면 서로 다른 app 디렉터리에 있는 urls에서 같은 루트 이름name을 정의할 때 URL 역해석 오류가 발생할 수 있습니다.
라우팅 앨리어스 name에는 역할 영역이 없기 때문에 Django는 URL을 역으로 해석할 때 프로젝트의 전역 순서에 따라 검색하고 첫 번째 라우팅 앨리어스 name이 지정한 URL을 찾으면 바로 돌아갑니다.
서식
include(("app :urls","app "))
인스턴스
path("app01/", include(("app01.urls","app01")))
path("app01/", include(("app02.urls","app02")))
views에서.py에서 형식 사용
reverse("app : ")
인스턴스
return redirect(reverse("app01:login")
templates 템플릿의 HTML 파일에서 형식 사용
{% url "app : " %}
인스턴스
<form action="{% url 'app01:login' %}" method="post">
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.