Django 경로 와 보기

8002 단어
경로 층
1. 경로 일치 규칙:
첫 번 째 매개 변 수 는 정규 표현 식 입 니 다. 일치 규칙 은 위 에서 아래로 일치 합 니 다. 하나 로 일치 하면 바로 일치 합 니 다. 해당 하 는 보기 함 수 를 직접 실행 합 니 다.
url(r'login', views.login),

위의 형식 으로 일치 하면 모호 하 게 일치 합 니 다. login 의 앞 에는 제한 조건 이 없고 임의의 문자열 을 입력 할 수 있 습 니 다. login 의 뒤에 도 제한 조건 이 없 으 며 임의의 문자열 을 입력 할 수 있 습 니 다. 그러면 제 경로 에 login 이라는 키워드 가 있 으 면 제 가 무엇 을 입력 하 든 상관 없 이 접근 할 수 있 습 니 다.어떻게 해결 하 는 지 는 앞에서 ^ h 와 뒤에 $기 호 를 추가 하 는 것 입 니 다. 그러면 제한 되 어 있 습 니 다. 경로 가 맞 아야 접근 할 수 있 습 니 다. 다음 과 같 습 니 다.
url(r'^login/$', views.login),  #               

사이트 첫 페이지 경로 설정:
url(r'^$', views.login),  #               

웹 페이지 오류 경로 설정:
url(r'',views.error)  #               

2. 유명 그룹 과 무명 그룹 전 참
이름 없 는 그룹 (괄호 를 넣 은 정규 표현 식 과 일치 하 는 내용 을 위치 매개 변수 로 하여 해당 하 는 보기 함수 에 자동 으로 전달 합 니 다)
경로 층
url(r'^login/([0-9]{4})$', views.login),  # ([0-9]{4})  4         

보기 함수 층
def login(request,year): #                           ,            
    print(year) # http://127.0.0.1:8000/login/2019        2019
    return render(request,'login.html')

여러 개의 이름 없 는 그룹
경로 층
url(r'^login/([0-9]{4})([0-9]{2})$', views.login), # ([0-9]{4})  4           ([0-9]{2})   2         

보기 함수 층:
def login(request,*args): #                           ,            
    print(agrs) # http://127.0.0.1:8000/login/2019/06        (2019,06)
    return render(request,'login.html')

이름 있 는 그룹:
유명한 그룹 (괄호 를 넣 은 정규 표현 식 과 일치 하 는 내용 을 키워드 매개 변수 로 해당 하 는 보기 함수 에 자동 으로 전달 합 니 다)
메모: 무명 그룹 과 유명 그룹 을 섞 어 사용 할 수 없습니다!!
경로 계층:
url(r'^index/(?P\d+)/',views.index) 

보기 함수 층 방식 1:
def index(request,year):
        print(year)
        return HttpResponse('test')

보기 함수 층 방식 2
def index(request,**kwargs):
        print(kwargs)
        return HttpResponse('test')

역방향 해석
이름 에 따라 동적 으로 대응 하 는 경 로 를 가 져 옵 니 다.
전단 템 플 릿 방식
문법 {% url '경로 의 별명'%}
경로 계층:
    url(r'^index111/', views.index,name='xxx'),
    #                       
    #                 
    #               

전단 모형

1111111111111

s

백 엔 드 방식
문법 reverse ('경로 의 별명')
    url(r'^index111/', views.index,name='xxx'),

보기 함수 층
    def index(request):

    if request.method == 'POST':
        url = reverse('xxx')
        return redirect(url)
    return render(request,'index.html')

이름 없 는 그룹 역방향 분석
백 엔 드
경로
url(r'^index/([0-9]{4})/', views.index,name='xxx'),

보기 함수
def index(request,*age):
   
    rl = reverse('xxx', args=(2019,))
    print(rl)
    return render(request,'index.html')

전단
경로
url(r'^index/([0-9]{4})/', views.index,name='xxx'),

전단 html 페이지


이름 있 는 그룹 역방향 분석
    
        #                    
        print(reverse('list',args=(10,)))
        #         
        print(reverse('list',kwargs={'year':10}))
        
        #                    
        {% url 'list' 10 %}
        #         
        {% url 'list' year=10 %}

요약: 유명 그룹 과 이름 없 는 그룹 에 대한 역방향 분석 을 통일 적 으로 하나의 형식 으로 사용 하면 백 엔 드 reverse ('list', args = (10,) \ # 여기 있 는 숫자 는 보통 데이터 의 주 키 값 전단 {% url 'list' 10%} 역방향 해석 의 본질 입 니 다. 이름 에 접근 할 수 있 는 보기 함수 입 니 다.
경로 배포
    
    django   app         urls.py   ,templates   ,static   
        urls.py(   )                       
         :
       :
           :
            #          
            url(r'^app01','app01.urls'),
            url(r'^app02','app02.urls')
         app01  :
                app01    app01     urls           ,  
                       copy app01    
            urlpatterns = [
                url(r'^index/', views.index),
                ]
       :
           :
            #      include app01 app02 urls    
                  
            from django.conf.urls import url,include
           from app01 import urls as a1
           from app02 import urls as a2
            url(r'^app01',include(a1)),
            url(r'^app02',include(a2)),
             app01  :
                app01    app01     urls           ,  
                       copy app01    
            urlpatterns = [
                url(r'^index/', views.index),
                ]

이름 공간
    (  )
#          app         
    url(r'^app01/',include(app01_urls,namespace='app01')),
    url(r'^app02/',include(app02_urls,namespace='app02'))
app01.urls.py
    from django.conf.urls import url
    from app01 import views
    urlpatterns = [
        url(r'^index/',views.index,name='index')
    ]

app02.urls.py
    from django.conf.urls import url
    from app02 import views
    urlpatterns = [
        url(r'^index/',views.index,name='index')
    ]

app01.views.py
reverse('app01:index')

app02.views.py
reverse('app02:index')

의사 정적 웹 페이지:
     
        seo
    url(r'^index.html',views.index,name='app01_index')

가상 환경
    
              python   

django1.0 django2.0     
    django2.0   path          ,       ,100%    
    
    django2.0   re_path   django1.0   url
    
  django2.0   path        ,             

    str,         (/)        ,       
    int,     ,  0。
    slug,    、      、         。
    uuid,      uuid,  075194d3-6885-417e-a8a8-6c931e272f00。
    path,         ,        (/)(   ?)

      
    1.     
    2. 
    3.  

#       
class FourDigitYearConverter:
    regex = '[0-9]{4}'
    def to_python(self, value):
        return int(value)
    def to_url(self, value):
        return '%04d' % value  #    ,   0  ,           !
register_converter(FourDigitYearConverter, 'yyyy')
PS:                 

FBV 와 CBV
FBV CBV
FBV:       
CBV:      

CBV:
    url(r'^mycls/',views.MyCls.as_view())

    class MyCls(View):
        def get(self,request):
            return render(request,'index.html')
        def post(self,request):
            return HttpResponse('post')

   FBV  CBV                 
urlpatterns = [
    # url(r'^mycls/',views.view)
    url(r'^mycls/',views.MyCls.as_view())
]

class MyCls(View):
    def get(self,request):
        return render(request,'index.html')
    def post(self,request):
        return HttpResponse('post')
       
        :
    1.method     post
    2.enctype    formdata  

          
    1.        csrfmiddleware   
    2.  request.FILES       post    
    
file_obj = request.FILES.get('my_file')
    print(file_obj.name)
    with open(file_obj.name,'wb') as f:
        for line in file_obj.chunks():
            f.write(line)

다음으로 전송:https://www.cnblogs.com/ZKPython/p/11000372.html

좋은 웹페이지 즐겨찾기