2016-06-08 2 views
0

"Add_prod"라는 클래스가 있는데, 책, 저자, 가격 등과 같은 몇 가지 열을 만들었습니다. 템플릿에서 가격을 오름차순/내림차순으로 정렬 할 수있는 두 개의 하이퍼 링크를 만들었습니다. "name "속성은 앵커 태그에서 지원하지 않습니다. 또한 이름 대신 id 속성을 사용했지만 여전히 사용하지 않았습니다. 정렬 된 순서로 제품을 정렬하도록 앵커 태그에서 데이터를 가져 오는 방법은 다음과 같습니다.django의 링크 태그에서 데이터를 가져 오는 방법은 무엇입니까?

Views.py,

def welcome_user(request): 
    if 'low_price' in request.GET: 
     my_products = Add_prod.objects.all().order_by('price') 
    elif 'high_price' in request.GET: 
     my_products = Add_prod.objects.all().order_by('-price') 
    else: 
     my_products = Add_prod.objects.all() 
    context = { "Products":my_products} 

    #rest of code for other functionalities 
    return render(request,"welcome-user.html",context) 

내 템플릿 파일,

<form> 
    <div style="text-align: right"> 
      <a name="low_price" href="{% url 'welcome_user' %}">Low Price</a> 
      <a name="high_price" href="{% url 'welcome_user' %}">High Price</a> 
    </div> 
</form> 
+0

당신은'url' 태그에 매개 변수를 제공해야합니다. – Wtower

답변

1

당신은 query parameters 당신이보기에 기대와 URL을 추가 할 필요가

<a name="low_price" href="{% url 'welcome_user' %}?low_price">Low Price</a> 
<a name="high_price" href="{% url 'welcome_user' %}?high_price">High Price</a> 
+0

URL을 변경하지 않고도이 작업을 수행 할 수 있습니까? – Bhanukiran

+0

URL 패턴을 변경할 필요가 없습니다. 그래서'? low_price'가 검색어 매개 변수로 사용되어 URL 패턴이 동일하게 유지됩니다. – AKS

+1

당신의 대답은 완벽하게 작동하고 있습니다 – Bhanukiran

1

두 가지 방법이 있습니다 :

@ 1 답으로 대답. 이 방법으로

def welcome_user(request,type): 
    if 'low_price' == type: 
     my_products = Add_prod.objects.all().order_by('price') 
    if 'high_price' == type: 
     my_products = Add_prod.objects.all().order_by('-price') 
    else: 
     my_products = Add_prod.objects.all() 
    context = { "Products":my_products} 

    #rest of code for other functionalities 


<form> 
    <div style="text-align: right"> 
      <a name="low_price" href="{% url 'welcome_user' low_price %}">Low Price</a> 
      <a name="high_price" href="{% url 'welcome_user' high_price%}">High Price</a> 
    </div> 
</form> 

참고

2

하면 실제 방문 .../welcome_user/LOW_PRICE/또는 .../welcome_user/hight_price/그래서

,이 에 url patterns을 변경해야 url(r'^welcome_user/(?P<type>.+)/$','welcome_user')

나는 param을 돌볼 필요가 없으므로이 방법을 좋아합니다. 다른 말로하면 GET에서 아무것도 얻지 못하거나 검사 할 필요가 없습니다. 불법이 아니라면, 당신의 견해에 맞지 않습니다.

+0

이것이 박스에서 작동하지 않을지 확신하지 못합니다. 이를 위해 새 URL 패턴을 만들어야합니다. – AKS

+0

예, URL 패턴을 변경해야합니다. url (r '^ welcome_user/(? P . +)/$', 'welcome_user') –

+0

URL을 변경하지 않고이를 수행 할 수 있습니까? – Bhanukiran

0

@AKS 조언이 나에게 적합하지 않았습니다.

그러나 다음이 한 일 :

<a href="{% link %}?param">Text</a> 

그리고 뷰에서 사용자가 지정한 :

if 'param' in request.GET: 
    ... 
관련 문제