Python_Django 프로젝트 URL 이름:

7768 단어 django 입문

url 이름이 왜 필요합니까?


URL이 자주 바뀌니까.코드에 죽으면 코드를 자주 바꿀 수도 있어요.URL에 이름을 지어주고 나중에 URL을 사용할 때 그의 이름을 사용해서 반전시키면 돼요. URL을 죽일 필요가 없어요.

어떻게 URL에 이름을 지정합니까?

path 함수에서 name 매개 변수를 전달하면 지정할 수 있습니다.예제 코드는 다음과 같습니다.
urlpatterns = [
    path('',views.index,name='index'),
    path('login/',views.login,name='login')
]

네임스페이스 적용:


여러 app 사이에서 같은 이름의 URL이 생길 수 있습니다.이럴 때 URL을 반전할 때 혼동을 피하기 위해 응용 이름 공간을 사용하여 구분할 수 있다.응용 이름 공간을 정의하는 것은 매우 간단합니다. appurls.py 에서 app_name 라는 변수를 정의하여 이 응용 프로그램의 이름 공간을 지정하면 됩니다.예제 코드는 다음과 같습니다.
urlpatterns = [
    path('',include('front.urls')),
    #    app      
    path('cms1/',include('cms.urls',namespace='cms1')),
    path('cms2/',include('cms.urls',namespace='cms2')),
]

앞으로 반전을 할 때는 :url 방식으로 반전을 할 수 있다.예제 코드는 다음과 같습니다.
login_url = reverse('front:login')

reverse 반전:

  • URL을 반전할 때 파라미터를 추가해야 한다면 kwargs 파라미터를 revers 함수에 전달할 수 있습니다.예제 코드는 다음과 같습니다.
    detail_url = reverse('detail',kwargs={"article_id":1,'page':2})
  • 검색 문자열의 매개 변수를 추가하려면 수동으로 연결해야 합니다.예제 코드는 다음과 같습니다.
    login_url = reverse('login') + "?next=/"
  • 응용(app) 네임스페이스 및 인스턴스 네임스페이스:


    하나의 앱으로 여러 개의 실례를 만들 수 있습니다.여러 개의 URL을 사용하여 같은 앱을 비출 수 있습니다.그래서 문제가 생겼어요.앞으로 반전할 때 응용 네임스페이스를 사용하면 혼동이 발생할 수 있다.이 문제를 피하기 위해서우리는 실례 명명 공간을 사용할 수 있다.실례 명명 공간도 매우 간단하다. include 함수에서 namespace 변수를 전달하면 된다.예제 코드는 다음과 같습니다.
    urlpatterns = [
        path('',include('front.urls')),
        #    app      
        path('cms1/',include('cms.urls',namespace='cms1')),
        path('cms2/',include('cms.urls',namespace='cms2')),
    ]

    이후 반전을 할 때 실례 명칭 공간에 따라 구체적인 URL을 지정할 수 있다.예제 코드는 다음과 같습니다.
    def index(request):
        username = request.GET.get("username")
        if username:
            return HttpResponse('CMS  ')
        else:
            #          
            current_namespace = request.resolver_match.namespace
            return redirect(reverse("%s:login"%current_namespace))

    좋은 웹페이지 즐겨찾기