python 사용법 - django 2.0에서는 urls.py에서 path () 또는 url ()을 사용하는 것이 더 좋습니까?





차이 정규식 (6)


새로운 django.urls.path() 함수는 더 간단하고 읽기 쉬운 URL 라우팅 구문을 허용합니다. 예를 들어, 이전 Django의 예제는 다음과 같습니다.

url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),

다음과 같이 쓸 수 있습니다 :

path('articles/<int:year>/', views.year_archive),

이전 버전의 django.conf.urls.url () 함수는 이제 django.urls.re_path() 로 사용할 수 있습니다. 이전 위치는 구형 호환성을 위해 남아 있으며, 절박한 지원 중단이 필요하지 않습니다. 이전 django.conf.urls.include () 함수는 이제 django.urls 에서 가져올 수 있으므로 django.urls import include , path , re_path를 URLconfs 에서 사용할 수 있습니다.

추가 읽기 django doc

django 온라인 강좌에서 강사는 url() 함수를 사용하여보기를 호출하고 urlpatterns 목록의 정규 표현식을 사용합니다. 나는 이것에 대한 다른 예제를 YouTube에서 보았습니다. 예

from django.contrib import admin
from django.urls import include
from django.conf.urls import url

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^polls/', include('polls.urls')),
]


#and in polls/urls.py

urlpatterns = [        
    url(r'^$', views.index, name="index"),
]

그러나 Django 튜토리얼을 진행할 때 대신 path() 를 사용 path() .

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name="index"),        
]

path(r'^$', views.index, name="index") 를 사용하면 mysite.com/polls/ 가 표시되지 않으므로 정규 표현식이 path() 함수와 작동하지 않는 것 같습니다.

정규 표현식없이 올바른 방법으로 path() 를 사용하고 있습니까? url() 더 강력하지만 더 복잡하여 path() 를 사용하여 우리를 시작합니다. 또는 다른 직업에 대한 다른 도구의 경우입니까?




url 장고 문서에서

url(regex, view, kwargs=None, name=None) 이 함수는 django.urls.re_path() 의 별명입니다. 이후 릴리스에서는 더 이상 사용되지 않을 수 있습니다.

pathre_path 사이의 주요 차이점은 path 가 정규식없이 path 사용한다는 것입니다.

복잡한 regex 호출에는 re_path 를 사용할 수 있고 더 간단한 조회에는 path 만 사용할 수 있습니다.




Path는 Django 2.0의 새로운 기능입니다. 여기에 설명되어 있습니다 : https://docs.djangoproject.com/en/2.0/releases/2.0/#whats-new-2-0

좀 더 파이썬적인 방법처럼 보이고, 당신이보기 위해 전달한 인자에서 정규 표현식을 사용하지 못하게 할 수 있습니다 ... 예를 들어 int () 함수를 사용할 수 있습니다.




path 는 Django 2.0에서 새롭게 추가 된 것으로, 몇 주 전에 릴리스되었습니다. 대부분의 자습서는 새 구문에 대해 업데이트되지 않았습니다.

그것은 분명히 일을하는 더 간단한 방법이라고 생각되었습니다. 나는 URL이 더 강력하다고는 말할 수 없지만 두 형식 중 하나로 패턴을 표현할 수 있어야한다.




path(r'^$', views.index, name="index") 와 같은 정규 표현식은 path() 함수와 함께 작동하지 않는 것 같습니다.

그것은 다음과 같아야합니다 : path('', views.index, name="index") .

정규 표현식을 입력하려면 첫 번째 인수는 공백이어야합니다.




BrenBarn의 답변에 대한 평판이 부족합니다. 여기에 약간의 보완책이 있습니다.

compileall 문서에 따르면 :

-b
Write the byte-code files to their legacy locations and names, which may overwrite byte-code files created by another version of Python. The default is to write files to their PEP 3147 locations and names, which allows byte-code files from multiple versions of Python to coexist.

그래서 당신은 python -m compileall -b . 실행할 수 있습니다 python -m compileall -b . 이 디렉토리에있는 모든 코드 파일을 재귀 적으로 컴파일합니다.





python django django-urls