You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么我的Django项目中request.GET.get("edit")无法正常生效?

问题根因
  • 编辑按钮的表单action配置为直接跳转到create路由,点击按钮后请求不会走到page视图的判断逻辑,request.GET.get("edit")永远不会被触发,session['edit']始终为默认值False
  • 表单内没有携带name="edit"的参数,即使请求发到page视图,GET参数中也不存在edit字段,判断条件仍不生效
  • create视图中title、content变量未提前获取就直接使用,运行会抛出变量未定义异常
修复方案

1. 修改page.html模板表单

将表单提交目标改为当前页面,同时给提交按钮添加name="edit"属性,点击后会携带edit参数请求page视图:

{% block body %}
    {% if entry %}
        <h1>{{title}}</h1>
        {{ entry }}
    {% endif %}
  
    <form action="" method="get">
        <input type="submit" name="edit" value="edit" class="button">
    </form>
{% endblock %}

2. 修改page视图逻辑

检测到edit参数后,更新session状态后直接重定向到create视图,避免重复渲染当前页面:

from django.shortcuts import redirect

def page(request,user_input):
    entry = util.get_entry(user_input)
    name = user_input.capitalize()
    request.session['name'] = name
    request.session['entry'] = entry

    if request.GET.get("edit"):
        request.session['edit'] = True
        # 跳转至create视图
        return redirect("create")
    else:
        request.session['edit'] = False

    return render(request, "homepage/page.html", {
        "entry":entry,
        "title":name,
    })

3. 修复create视图异常

补充参数获取逻辑,添加session容错处理,使用完编辑状态后及时清理避免后续误触发:

def create(request):
    change = request.session.get('edit', False)
    # 提前获取表单提交的title、content参数
    title = request.GET.get('title', '')
    content = request.GET.get('content', '')
    if request.GET.get('submit') and title:
        title = title.lower()
        if change: 
            util.save_entry(title,content)
            # 清理已使用的编辑状态
            del request.session['edit']
            return HttpResponseRedirect('/index')
    # 补充create页面渲染逻辑,将存储的词条信息传到模板供预填
    return render(request, "你的create模板路径", {
        "title": request.session.get('name', ''),
        "content": request.session.get('entry', '')
    })

内容的提问来源于stack exchange,提问作者Rithik Tank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 01:54:03