在我的模型中,我有一个名为“Add_prod”的类,我创建了一些列,如书籍,作者,价格等。在模板中,我创建了两个超链接,用于按价格的升序/降序对数据进行排序。“名称“属性不支持锚标记。我也尝试使用id属性而不是名称,但仍然没有用。所以如何从锚标记中获取数据,以便按排序顺序排列产品。
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 :(得分:1)
您需要在视图中附加您期望query parameters
的网址:
<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>
答案 1 :(得分:1)
有两种方式:
1作为@AKS回答。
2
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>
注意这样你实际访问过... / welcome_user / low_price /或... / welcome_user / hight_price /
所以,您需要将url patterns
更改为此
url(r'^welcome_user/(?P<type>.+)/$','welcome_user')
我喜欢这种方式,因为你不需要照顾任何参数。换句话说,你不需要从GET获取或检查任何东西。如果它不是非法的,它就不会影响你的观点。
答案 2 :(得分:0)
@AKS建议对我不起作用。
但以下确实有效:
<a href="{% link %}?param">Text</a>
然后在视图中我指定:
if 'param' in request.GET:
...