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

Django如何编写views.py实现跳转预填报告号的新增投诉页

实现方案

1. 补充views.py代码

首先导入未引入的依赖(如果已有可跳过),再新增新增投诉页的视图函数:

from django.shortcuts import redirect
from .forms import ComplaintForm

# 原有dashboard视图保持不变
def dashboard(request):
   count = Complaint.objects.filter(user=request.user).count()
   context = {'count':count}
   return render(request, 'dashboard.html', context)

# 新增投诉页视图
def create_complaint(request):
    # 获取URL参数中携带的用户输入的报告号
    report_num = request.GET.get('reportnumber', '')
    
    if request.method == 'POST':
        form = ComplaintForm(request.POST, request.FILES)
        if form.is_valid():
            # 绑定当前登录用户后保存投诉记录
            complaint = form.save(commit=False)
            complaint.user = request.user
            complaint.save()
            # 保存成功后跳转回仪表盘,可根据自身需求修改跳转目标
            return redirect('dashboard')
    else:
        # 初始化表单时将获取到的报告号预填入对应字段
        form = ComplaintForm(initial={'reportnumber': report_num})
    
    return render(request, 'create_complaint.html', {'form': form})

2. 配套修改配置(非views.py但必须完成)

2.1 配置urls.py路由

在对应app的urls.py中添加新增投诉页的路由映射:

urlpatterns = [
    # 原有其他路由保持不变
    path('create-complaint/', views.create_complaint, name='create_complaint'),
]

2.2 修改dashboard模板

给注册按钮添加点击跳转逻辑,携带输入的报告号跳转到目标页:

<div class="col-lg middle middle-con">
        <div class="container mid-pink-con">
            <h1 class="we">We value,</h1>
            <h5 class="txt">Lodge your complaints here <br> and relex, now it's our turn.</h5>

            <input class="search" type="text" id="myInput" onkeyup="myFunction()" placeholder=" Enter Report Number" title="Type in a name">
            <!-- 给按钮添加点击事件 -->
            <button type="button" class="btn btn-dark register-button" onclick="jumpToCreate()">Register</button>
        </div>
        <div class="container mid-white-con">
            <p class="comp-txt">Number of complaints registered on your profile</p>
            <h1 class="header1">{{count}}</h1>
        </div>
    </div>

<!-- 新增跳转逻辑 -->
<script>
function jumpToCreate() {
    const inputVal = document.getElementById('myInput').value.trim();
    if (!inputVal) {
        alert('请先输入报告号');
        return;
    }
    // 携带报告号参数跳转到新增投诉页
    window.location.href = "{% url 'create_complaint' %}?reportnumber=" + encodeURIComponent(inputVal);
}
</script>

2.3 新增投诉页模板

创建create_complaint.html模板文件,按你需要的样式渲染ComplaintForm即可,表单的报告号字段会自动预填用户输入的值。

内容的提问来源于stack exchange,提问作者Isha Jagadi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 12:21:02