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

Django投诉管理系统需在views.py中添加哪些内容以接收用户提交的投诉?

具体实现步骤

1. 修复现有模板的错误

你当前的模板存在两个核心问题,导致后端无法接收提交数据:

  • 所有输入字段缺少name属性,Django无法识别参数对应关系
  • 文件上传控件写错了,button标签不支持文件选择,需要改用input标签
    修正后的模板代码:
<div class="col-lg middle middle-complaint-con">
        <i class="fas fa-folder-open fa-4x comp-folder-icon"></i>
        <h1 class="all-comp">New Complaint</h1>

        <form class="" action="{% url 'submit_complaint' %}" method="POST" enctype="multipart/form-data">
            {% csrf_token %}
            <input type="text" name="title" class="form-control col-lg-10 comp-title-field" placeholder="投诉标题">
            <p class="desc">描述</p>
            <button type="button" class="btn btn-secondary preview-btn">预览</button>
            <textarea name="description" class="form-control comp-textarea" rows="7" placeholder="请输入内容"></textarea>
            <!-- 保留原按钮样式的文件上传控件 -->
            <label for="file-upload" class="btn btn-secondary attach-btn">
                <i class="fas fa-file-upload"></i> 附件
            </label>
            <input id="file-upload" type="file" name="document" style="display:none;" required>
            <button type="submit" class="btn btn-secondary save-btn" value="submit"><i class="fas fa-save"></i> 保存</button>
        </form>

    </div>

2. 编写forms.py

直接基于你的模型生成ModelForm,自带参数校验,无需重复定义字段:

from django import forms
from .models import Complaints

class ComplaintForm(forms.ModelForm):
    class Meta:
        model = Complaints
        # 排除需要后台手动赋值的user字段
        fields = ['title', 'description', 'highpriority', 'document']

3. 编写views.py逻辑

处理提交请求、绑定登录用户、保存数据:

from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from .forms import ComplaintForm

# 要求必须登录才能提交投诉
@login_required
def submit_complaint(request):
    if request.method == 'POST':
        # 同时传入表单数据和上传的文件
        form = ComplaintForm(request.POST, request.FILES)
        if form.is_valid():
            # 先不提交到数据库,补充user字段后再保存
            complaint = form.save(commit=False)
            complaint.user = request.user
            complaint.save()
            # 保存成功后跳转到你指定的页面,比如投诉列表页
            return redirect('你的路由名称')
    else:
        form = ComplaintForm()
    return render(request, '你的模板文件路径.html', {'form': form})

4. 配置urls.py

新增提交页面的路由:

from django.urls import path
from . import views

urlpatterns = [
    # 其他原有路由
    path('submit-complaint/', views.submit_complaint, name='submit_complaint'),
]

注意事项

  • 确保你的settings.py中配置了正确的文件上传路径,否则附件会保存失败
  • 如果需要支持高优先级选择,在模板中新增name为highpriority的checkbox即可
  • 提交成功后的跳转路由请替换为你项目中实际存在的路由

内容的提问来源于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.13 05:09:03