Django 경로 와 보기
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'),
#
#
#
전단 모형
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.