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
相关产品推荐
相关产品推荐

