是否可以使用 GET 方法将值从 HTML 页面传递到 Django 视图?

Is it possible to pass a value from HTML page to Django view using GET method?

我有一个基本侧边栏,其中包含两个项目 page1 和 page2。当用户点击一个项目时,它会呈现相应的页面。 我在边栏中还有一个过滤器,允许用户按类型过滤页面上的结果。 当我选择一个过滤器时,我能够在页面上看到适当的结果,但我的目的是让系统记住上次选择的过滤器,这样当用户选择一个新页面时,它会自动显示上次选择的过滤器的结果.这可以通过 GET 方法发送变量 'type' 来完成吗?或任何其他解决方案将不胜感激。

在 base.html 中,通过 Get 方法呈现新页面

<div id="page" class="collapse" aria-labelledby="headingUtilities"
data-parent="#accordionSidebar">
    <div class="bg-white py-2 collapse-inner rounded">
        <a class="collapse-item" href="page1">Page1</a>
        <a class="collapse-item" href="page2">Page2</a>
    </div>
</div>

在base.html中,通过POST方法过滤当前页面

<div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionSidebar">
    <div class="bg-white py-2 collapse-inner rounded">
        <h6 class="collapse-header">Filter By Type:</h6>
        <form name="modality" action="" id='type' method="post" enctype="multipart/form-data">
            {% csrf_token %}
            <input class="collapse-item" name ='type' type="submit" value="type1" onclick="this.form.submit()">
            <input class="collapse-item" name ='type' type="submit" value="type2" onclick="this.form.submit()">
            <input class="collapse-item" name ='type' type="submit" value="type3" onclick="this.form.submit()">
        </form>
    </div>
</div>

django 视图:

@login_required(login_url='login')
def page1(request):
if request.method == 'POST':
    type = request.POST['type']
else:
    type = 'type1'


return render(request, "dashboard/page1.html",
                  {
                  'type': type,}

@login_required(login_url='login')
def page2(request):
if request.method == 'POST':
    type = request.POST['type']
else:
    type = 'type1'


return render(request, "dashboard/page2.html",
                  {
                  'type': type,}

第 1 页HTML:

{% extends 'dashboard/base.html' %}

{% block content %}

    <h1> Page1: {{type}} </h1>

{% end block %}

第 2 页HTML:

{% extends 'dashboard/base.html' %}

{% block content %}

    <h1> Page2: {{type}} </h1>

{% end block %}

可以传参得到如下

urlpatterns = [
  path('dashboard/page1/<type>, page1view),
  path('dashboard/page2/<type>, page2view)
]

然后使用它们

def page1view(request, type):
    pass

但我认为您应该改用 sessions。用户将自动向您发送每个新请求的会话标识符,django 将为您获取您选择存储在该用户会话中的所有数据。可以当字典使用。

request.session['type'] = type
type = request.session['type']