Django视图和模板链接

wer*_*uer 2 html django django-templates django-views

我在Django中的index.html模板具有以下内容:

<ul>
    <li><a href="{% url 'quantities' %} value="1">All</a></li>
    <li><a href="{% url 'quantities' %} value="2">Subset1</a></li>
    <li><a href="{% url 'quantities' %} value="3">Subset2</a></li>
    <li><a href="{% url 'quantities' %} value="4">Subset3</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

因此链接到相同的模板,但(取决于点击的链接)我想写我的app/views.py中的函数:

def quantities(request):
    if value == "1":
        levels = Model_1.objects.all()
    elif value == "2":
        levels = Model_1.objects.filter(createria=2)
    elif value == "3":
        levels = Model_1.objects.filter(createria=3)
    elif value == "4":
        levels = Model_1.objects.filter(createria=4)
Run Code Online (Sandbox Code Playgroud)

我可以获取上一页中点击的链接的值吗?

cat*_*ran 6

我最好传递url中的值而不是url参数:

<ul>
    <li><a href="{% url 'quantities_all' %}>All</a></li>
    <li><a href="{% url 'quantities' '2' %}>Subset1</a></li>
    <li><a href="{% url 'quantities' '3' %}>Subset2</a></li>
    <li><a href="{% url 'quantities' '4' %}>Subset3</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

您的视图将如下所示:

def quantities(request, value=None):
    if value in ('2', '3', '4'):
        levels = Model_1.objects.filter(createria=int(value))
    else:
        levels = Model_1.objects.all()
    ...
Run Code Online (Sandbox Code Playgroud)

别忘了改变你的网址:

url(r'^quantities/$', 'app.views.quantities', name='quantities_all'),
url(r'^quantities/(\d+)/$', 'app.views.quantities', name='quantities'),
Run Code Online (Sandbox Code Playgroud)