57 Django - URL 경로 시스템

5476 단어
목차
  • URL 경로 시스템
  • URL 설정
  • 기본 형식:
  • 매개 변수 설명

  • 정규 표현 식
  • url 기본 설정
  • views
  • 주의사항
  • include - - - URL 배포
  • URL (별명) 과 URL 의 역방향 해석
  • 네 임 스페이스 모드

  • URL 경로 시스템
    URL 설정
    URL 설정 (URLconf) 은 Django 가 지원 하 는 사이트 의 디 렉 터 리 와 같 습 니 다.그것 의 본질은 URL 과 이 URL 을 호출 할 보기 함수 사이 의 맵 입 니 다.당신 은 이런 방식 으로 Django 에 게 이 URL 에 대해 이 코드 를 호출 하고 그 URL 에 대해 그 코드 를 호출 하 는 것 을 알려 줍 니 다.
    기본 형식:
    from django.conf.urls import url
    #  urlpatterns,         ,                 ,        ,         request, wsgiref environ  ,           
    urlpatterns = [
         url(     , views    ,  ,  ),
    ]

    매개 변수 설명
  • 정규 표현 식: 정규 표현 식 문자열
  • views 보기 함수: 호출 가능 한 대상 입 니 다. 보통 보기 함수 나 지정 한 보기 함수 경 로 를 위 한 문자열
  • 매개 변수: 보기 함수 에 전달 할 기본 매개 변수 (사전 형식)
  • 별명: 선택 할 수 있 는 name 인자
  • 정규 표현 식
    예: 연도, 월 에 대응 하 는 글 을 찾 습 니 다.효과 표시: 입력http://127.0.0.1:8000/articles/2019/9/
    url 기본 설정
    무명 과 유명 그룹.
    그룹 이름 정규 표현 식 그룹의 문법 은 (?Ppattern) 이 며, 그 중 name 은 그룹의 이름 이 며, pattern 는 일치 하 는 패턴 입 니 다.
    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views
    urlpatterns = [url(r'^admin/', admin.site.urls),
                   url(r'^home/', views.home),
                   #             
                   url(r'^login/', views.login),   
                   
                   #       articles            ,        
                   # url(r'^articles/(\d+)/(\d+)/', views.articles),  
                   
                   #       articles                
                   url(r'^articles/(?P\d+)/(?P\d+)/', views.articles),]

    views 보기
    보기 함수 에서 기본 값 을 지정 할 수 있 습 니 다.
    from django.shortcuts import render, HttpResponse
    
    # Create your views here.
    
    def home(request):
        print(request.path)
        # return HttpResponse('hahaha')     #      
        return render(request,'home.html')  #   html  
    
    
    def login(request):
    
        if request.method == 'POST':
            print(request.POST) 
            # 
            name = request.POST.get('username')
            pwd = request.POST.get('pwd')
            if name == 'yan' and pwd == '123':
                return HttpResponse('    !')
            else:
                return HttpResponse('    !')
        else:
            return render(request, 'login.html')
    
    
    #            ,     
    # def articles(request,year,month):
    #     print(year,month)    #    year="2019"  month="9"
    #     return HttpResponse(year+' '+month+'     !')
    
    #            ,      
    def articles(request,m,y):
        print(y, m)         #    y="2019"  m="9"
        return HttpResponse(y + ' ' + m +'     !')

    주의 사항
  • urlpatterns 의 요 소 는 쓰기 순서에 따라 위 에서 아래로 정규 표현 식 과 일치 하 며 일치 하면 계속 하지 않 습 니 다.
  • URL 에서 값 을 잡 으 려 면 그 주변 에 괄호 한 쌍 만 놓 으 십시오. (그룹 일치)
  • 모든 URL 이 있 기 때문에 선도 적 인 역 슬 래 쉬 를 추가 할 필요 가 없습니다.예 를 들 어 ^ / articles 가 아 닌 ^ articles 일 것 입 니 다.
  • 각 정규 표현 식 앞의 'r' 는 선택 할 수 있 지만 추가 하 는 것 을 권장 합 니 다.
  • ^ articles & 무엇으로 끝 나 는 지, 무엇으로 시작 하 는 지, 경 로 를 엄 격 히 제한 합 니 다.

  • 캡 처 된 매개 변 수 는 항상 문자열 입 니 다:
    URLconf 에서 포 획 된 매개 변 수 는 일반적인 Python 문자열 로 보기 에 전 달 됩 니 다. 정규 표현 식 이 어떤 일치 방식 을 사용 하 든 간 에.(숫자 도 문자열 형식)
    login. html 파일
    
    
    
        
        Title
    
    
    
    
    

    24

    : :

    include - - URL 배포
  • python manage. py startapp app 02 \ # 응용 프로그램 을 추가 하고 setting 에서 설정
  • app 01, app 02 등 폴 더 에서 urls. py 파일 을 만 들 고 이 응용 경 로 를 설정 합 니 다
  • 프로젝트 디 렉 터 리 에 있 는 ulrs. py 파일 을 include 에 도입 하여 다음 설정 을 완성 합 니 다
  • from django.conf.urls import url,include
    from django.contrib import admin
    
    urlpatterns = [
        url(r'^app01',include('app01.urls')),
        # http://127.0.0.1:8000/app01/xxx       app01,   app01.urls      xxx
       url(r'^app02',include('app02.urls')), 
        url(r'^$', views.base)      #           ,   127.0.0.1:8000
        ]

    이름 URL (별명) 과 URL 의 역방향 분석
    urls. py 파일 에서:
    url(r'^  /', views.   , name='  '), 
      :
        url(r'^home2', views.home, name='home'), 

    html 파일 템 플 릿 에서:
    a, form 폼 에 많이 사용 합 니 다.
    {% url '  ' %}
      :
        {% url 'home' %}  # /home2/

    views.py
    방향 변경 에 사용 가능
    from django.urls import reverse
    
    reverse('  ')   #     
      :
        reverse("home") # /home2/   
    def my_url(request):
    
        return redirect('  ')   #      ,  reverse

    include 경로 가 배 포 될 때 별명 을 사용 하면 reverse 에서 경로 오류 가 발생 합 니 다.따라서 네 임 스페이스 모드 설정 이 필요 합 니 다.
    네 임 스페이스 모드
    다른 앱 이 같은 URL 이름 을 사용 하 더 라 도 URL 의 네 임 스페이스 모드 는 이름 을 바 꾸 는 유일한 URL 을 만 들 수 있 습 니 다.
    url(r'^app01',include('app01.urls', namespace='app01')),
    
    
    #     
    reverse('app01:home')   #       :  
    
    
    html   :
    {% url '      :  ' %}

    좋은 웹페이지 즐겨찾기