답변:
url이domain/search/?q=haha
다음 과 같을 때 :request.GET.get('q', '')
합니다.
q
원하는 매개 변수 이며 찾을 수없는 ''
경우 기본값 q
입니다.
그러나 대신을 구성하는 경우URLconf
의 캡처는 regex
인수 (또는 명명 된 인수)로 함수에 전달됩니다.
같은 :
(r'^user/(?P<username>\w{0,50})/$', views.profile_page,),
그럼 views.py
당신의 것
def profile_page(request, username):
# Rest of the method
self.kwargs['parameter']
camflan의 설명을 명확히하기 위해 다음을 가정 해 봅시다.
url(regex=r'^user/(?P<username>\w{1,50})/$', view='views.profile_page')
http://domain/user/thaiyoshi/?message=Hi
URL 디스패처 규칙은 URL 경로의 일부 (여기서 "user/thaiyoshi/"
) 를 포착 하여 요청 오브젝트와 함께보기 함수에 전달합니다.
쿼리 문자열은 (여기 message=Hi
) 구문 분석 및 매개 변수가 저장됩니다 QueryDict
에서request.GET
. HTTP GET 매개 변수에 대한 추가 일치 또는 처리가 수행되지 않습니다.
이 뷰 함수는 URL 경로에서 추출 된 부분과 쿼리 매개 변수를 모두 사용합니다.
def profile_page(request, username=None):
user = User.objects.get(username=username)
message = request.GET.get('message')
참고로, 요청 방법 (이 경우 "GET"
및 일반적으로 제출 된 양식에 대한 "POST"
)은request.method
. 어떤 경우에는 예상 한 것과 일치하는지 확인하는 것이 유용합니다.
업데이트 : 정보를 전달하기 위해 URL 경로 또는 쿼리 매개 변수를 사용할지 여부를 결정할 때 다음이 도움이 될 수 있습니다.
/blog/post/15/
(하지 /blog/posts/?id=15
)/blog/post/15/?show_comments=1
또는/blog/posts/2008/?sort_by=date&direction=desc
/blog/post/2008/09/30/django-urls/
GET 사용
request.GET["id"]
POST 사용
request.POST["id"]
KeyError
하여 키가 누락 된 경우 예외 를 피 했습니다. 동일한 작업을 수행하는 것이 좋습니다 (예 :) request.POST.get('id', '')
.
request
사용할 수 있는 개체 만있는 상황request.parser_context['kwargs']['your_param']
여기에 자신의 옵션을 추가하고 싶습니다. 누군가 urls.py에 경로를 설정하는 방법을 궁금해합니다.
domain/search/?q=CA
쿼리를 호출 할 수 있습니다.
사실 urls.py에서 이러한 경로를 설정할 필요는 없습니다. 설정해야 할 것은 urls.py의 경로입니다.
urlpatterns = [
path('domain/search/', views.CityListView.as_view()),
]
및 입력 할 때 HTTP : // 서버 : 포트 / 도메인 / 검색 / Q = CA를 . 쿼리 부분 '? q = CA'는 참조 할 수있는 해시 테이블에 자동으로 예약됩니다.
request.GET.get('q', None).
다음은 예제입니다 (views.py)
class CityListView(generics.ListAPIView):
serializer_class = CityNameSerializer
def get_queryset(self):
if self.request.method == 'GET':
queryset = City.objects.all()
state_name = self.request.GET.get('q', None)
if state_name is not None:
queryset = queryset.filter(state__name=state_name)
return queryset
또한 URL에 쿼리 문자열을 쓸 때
http://servername:port/domain/search/?q=CA
쿼리 문자열을 따옴표로 묶지 마십시오.
http://servername:port/domain/search/?q="CA"
시간을 절약 할 수있는 팁을 공유하고 싶습니다. 파일
에서 이와 같은 것을 사용하려는 경우 urls.py
:
url(r'^(?P<username>\w+)/$', views.profile_page,),
기본적으로 의미 www.example.com/<username>
합니다. 그것은 아래에 따르는 URL 항목과 원인 충돌하는 경향이있다, 그렇지 않으면 때문에, 당신의 URL 항목의 끝에 배치해야합니다, 그 중 즉, 액세스 한 것이다 당신에게 좋은 오류를 줄 : User matching query does not exist.
난 그냥 나 자신을 경험 했어요; 그것이 도움이되기를 바랍니다!
URL이 다음과 같은 경우 두 가지 일반적인 방법이 있습니다.
https://domain/method/?a=x&b=y
v1 :
특정 키가 필수 인 경우 다음을 사용할 수 있습니다.
key_a = request.GET['a']
a
키가 존재하면 값을 , 그렇지 않으면 예외를 반환합니다.
v2 :
키가 옵션 인 경우 :
request.GET.get('a')
아무 주장없이 시도해도 충돌하지 않습니다. 그래서 당신은 그것을 감싸고 예제로 try: except:
돌아갈 수 있습니다 HttpResponseBadRequest()
. 이것은 특별한 예외 처리를 사용하지 않고 코드를 덜 복잡하게 만드는 간단한 방법입니다.
이러한 쿼리는 현재 두 가지 방법으로 수행됩니다. 조회 매개 변수 (GET)에 액세스하려는 경우 다음을 조회 할 수 있습니다.
http://myserver:port/resource/?status=1
request.query_params.get('status', None) => 1
POST에 의해 전달 된 매개 변수에 액세스하려면 다음 방법으로 액세스해야합니다.
request.data.get('role', None)
'get ()'을 사용하여 사전 (QueryDict)에 액세스하면 기본값을 설정할 수 있습니다. 위의 경우, '상태'또는 '역할'에 대한 정보가 없으면 값은 없음입니다.