장고의 URL을 (라우팅)

장고의 URL을 (라우팅)

URL 구성 (URLconf)와 장고 디렉토리 사이트를 지원합니다.

그것의 본질은 URL과 당신이보기 함수를 호출 할 URL 사이의 매핑 테이블입니다.

우리는 해당 기능이 실행되는 시간의 URL을 발생 장고, 말된다 이런 식으로.

기본 형식 :

from django.conf.urls import url

urlpatterns = [
  url(正则表达式, views视图函数,参数,别名),
]

매개 변수 설명

  • 정규 표현식 : 정규 표현식 문자열
  • 뷰는 볼 : 호출 가능한 객체는 일반적으로 도면의 함수
  • 매개 변수 : 선택적인 매개 변수는 기본보기 함수에 전달되는 (사전)
  • 별칭 : 선택적 매개 변수의 이름

라우팅 시스템의 장고 2.0 버전

Re_path 버전 2.0 및 URL의 버전 1.11은 동일한 사용법입니다

from django.urls import path,re_path
urlpatterns = [
 path('articles/2003/', views.special_case_2003),
]


상세한 정규 표현식

기본 구성

from django.conf.urls import url

from . import views

urlpatterns = [
 url(r'^articles/2003/$', views.special_case_2003),
 url(r'^articles/([0-9]{4})/$', views.year_archive),
 url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
 url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
]

주의 사항 :

  1. 경기 중단에 성공하면, 정규 표현식을 일치하여 상단의 하나에서 쓰기 위해 urlpatterns 요소.
  2. 의 URL에서 값을 캡처하려면에만 괄호 (패킷 일치) 한 쌍을 배치합니다.
  3. 각 URL이 있기 때문에 필요가 선도적 인 백 슬래시를 추가 없습니다. 예를 들어, ^ 기사,하지 ^ / 기사해야한다.
  4. 'R'의 앞에 각 정규 표현식은 선택 사항이지만 추가 제안했다.

추가 정보 :

  1. APPEND_SLASH = TRUE : 오픈 액세스의 URL 주소 / 구성 항목의 /를 사용하여 경로에 점프 뒤에 여부
  2. 장고 기본 구성 파일이 매개 변수 settings.py APPEND_SLASH 아니라,이 매개 변수는 기본적 장고 APPEND_SLASH =입니다 참 / 거짓, 그 역할이 자동으로 URL의 끝에 추가 '/'


라우팅 일치 (패킷 일치)

:( 패킷 괄호로 URL 값을 포착하는 간단한 정규식 검색 패킷 ()을 사용하고, 기능의 관점에서 위치 파라미터를 전달하는) 일부 정규식 괄호를 제공하는 것이다

파이썬 정규 표현식에서 그룹 이름을 정규 표현식 구문 그룹은 (?P<name>pattern)어떤 name그룹의 이름이고, pattern일치하는 패턴이다.

여기에 다시 작성라는 이름의 그룹

from django.conf.urls import url

from . import views

urlpatterns = [
 url(r'^articles/2003/$', views.special_case_2003),
 url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
 url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
 url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.article_detail),
]

이 구현 예는 이전 단 미묘한 차이 동일 대신 뷰 위치 파라미터 전달 함수 파라미터 키로 캡쳐 값.

예를 들어, URL에 대한 / 기사 / 12분의 2,017 / 다음과 같은 방법으로 뷰 함수 호출에 해당 :

views.month_archive(request, year="2020", month="1")

알 수없는 그룹

특정 정규 표현식 추가 괄호로 경로를 일치하는 경우

정규식 괄호 일치하면 해당 뷰 파라미터 함수에 전달 된 콘텐츠로의 위치와 일치한다

url(r'^test/([0-9]{4})/',views.test)

보기 기능

def index(request, args):
  return HttpResponse('KAI')

유명한 그룹

별명에서 일부 정규 표현식으로

내용은 괄호 안에 정규 표현식과 일치 언제, 키워드 인수는 해당보기 함수에 전달로

url(r'^test/(?P<year>\d+)/',views.test)

보기 기능

def index(request,year):
  return HttpResponse('KAI')          

그는 추가 :

알 수없는 그룹과 유명한 그룹은 함께 사용할 수 없습니다

같은 캔 혼합 할 수 있지만 여러 이름을 사용하지 않지만

URL ( R '^ 시험 / (? P \ D +) / (? P \ D +) / 'views.test)

역방향 조회

일부 방법은 해당 액세스 결과 URL의 결과를 얻을 수있다

인덱스에 200 개 이상의 라벨, HREF 지점이 시나리오를 상상해 /

NEW_INDEX로 변경 인덱스 내부 URL을 어느 날, 당신은 단지 태그 HREF 설명서를 변경할 수 있습니다

당신이 마무리를 변경하면, 그것은 my_index, 주소를 변경할 수 있습니다 하루 중 다음 시간, 다음 더 이상 프로그램 다이 쓰기, 역 분석이 적용되는 방법도 없다.

사용

라우팅 기능을 부여하고 이름 사이의 대응 관계를보기

url(r'^testadd/',views.testadd,name='add')

프런트 엔드 분석을

{% url 'add' %}

백 엔드 분석

from django.shortcuts import render,HttpResponse,redirect,reverse
  reverse('add')

알 패킷 리버스 룩업

url(r'^testadd/(\d+)/',views.testadd,name='add')

프런트 엔드 분석을

{% url 'add' 1 %}

백 엔드 분석

reverse('add',args=(1,))

유명한 그룹 역방향 조회

url(r'^testadd/(?P<year>\d+)/',views.testadd,name='add')

프런트 엔드 분석을

URL의 % { '추가'. 1 %} # 권장

URL의 % { '추가'년 = %}. 1 # 표준

백 엔드 분석

역방향 ( '추가'인수 = (1))

역 (= kwargs로를 '추가'{ '년': 1})

경로 유통

장고 프로젝트는 상대적으로 큰 경우 때 라우팅 기능과보기의 대응 관계를 더

총 라우팅 코드가 너무 깁니다

계정에 전체 라우팅 코드를 가지고가는 것은 자신의 urls.py를 가질 수있는 각 응용 프로그램을 지원 장고 나쁜 유지 보수입니다

그리고 전체 경로는 더 이상 라우팅 대응 관계 및보기 기능 만 단지 배포 작업 작업을하지 않는다

기능에 액세스 할 수 식별 요청에 현재 요청의 요구에 따라 자동으로 응용 프로그램을 속한

다음 해당 응용 프로그램 urls.py의 내부에 발행하고 urls.py 내부 응용 프로그램에 의해 라우팅 기능을보기를 일치하도록 만든

뿐만 아니라 각 응용 프로그램뿐만 아니라 또한 자신의 정적 템플릿 파일 폴더 템플릿을 가질 수 있습니다 자신의 urls.py 추가를 가질 수

추가 될 간단한 장고 기반의 서브 그룹은 위의 특성에 따라 개발할 것

오직 각 사람은 자신의 응용 프로그램을 개발할 필요가 후 빈 장고 프로젝트를 작성해야

다중 프로파일 개인은 등록 프로젝트의 모든 사본을되는 앱

전체 경로 유통 번

모듈 배포를 필요로

django.conf.urls이 URL을 가져올에서 포함

URL ( R '^이 app01 /'() 'app01.urls'을 포함한다),

URL ( R '^ app02 /'포함 ( 'app02.urls'))

하위 라우팅

from django.conf.urls import url
from app01 import views

urlpatterns = [
url(r'^index/',views.index)
]

from django.conf.urls import url
from app02 import views

urlpatterns = [
url(r'^index/',views.index)
]


네임 스페이스

url(r'^app01/',include('app01.urls',namespace='app01'))
url(r'^app02/',include('app02.urls',namespace='app02'))
后端解析
reverse('app01:index')
reverse('app02:index')
前端解析
{% url 'app01:index' %}
{% url 'app02:index' %}
# 在给路由与视图函数起别名的时候只需要保证永远不出现冲突的情况即可
# 通常情况下我们推荐期别名的时候加上当前应用的应用名前缀

url(r'^index/',views.index,name='app01_index')
url(r'^index/',views.index,name='app02_index')

가상 환경

우리는 다른 프로젝트 기능 모듈에 필요한 항목 만 설치하기 위해 무엇을 할

적은 항목보다 더 소비하고, 자원을로드를 방지하기 위해 설치되지 않습니다 때

가상 환경을 만드는 방법

가상 환경은 순수 파이썬 인터프리터 환경과 유사

당신이 다시 다운로드 파이썬 인터프리터 싶습니다 가상 환경을 만들 각 고장

가상 환경은 너무 많이 사용하지 않는 것이 좋습니다

우리는 여전히 기계의 환경을 사용하는 단계를 학습하는 모든 네이티브 환경에서 모든 모듈에 장착 할 수 있습니다

의사 정적

이 문서의 내용이 죽은 의지하지 쉽게 변화 기록 된 경우 .html 인로 끝나는 URL은 인상을 준다

귀하의 사이트를 개선하기 위해 효율적인 쿼리 사이트를 제공하는 검색 엔진의 SEO 노력에 의해 수집된다

추천

출처www.cnblogs.com/kai-/p/12158918.html