【问题标题】:Can't seem to understand where I'm going wrong似乎无法理解我哪里出错了
【发布时间】:2021-07-20 05:17:55
【问题描述】:

我正在做一个接受用户投诉的 django 项目:

models.py:

class Complaint(models.Model):
   user = models.ForeignKey(User, on_delete= models.CASCADE, null = True, blank=True)
   id = models.AutoField(blank=False, primary_key=True)
   reportnumber = models.CharField(max_length=500 ,null = True, blank= False)
   eventdate = models.DateField(null=True, blank=False)
   event_type = models.CharField(max_length=300, null=True, blank=True)
   device_problem = models.CharField(max_length=300, null=True, blank=True)
   manufacturer = models.CharField(max_length=300, null=True, blank=True)
   product_code = models.CharField(max_length=300, null=True, blank=True)
   brand_name = models.CharField(max_length = 300, null=True, blank=True)
   exemption = models.CharField(max_length=300, null=True, blank=True)
   patient_problem = models.CharField(max_length=500, null=True, blank=True)
   event_text = models.TextField(null=True, blank= True)
   document = models.FileField(upload_to='static/documents', blank=True, null=True)

   def __str__(self):
       return self.reportnumber

views.py:

def History(request):
  complaint_data = Complaint.objects.filter(user=request.user) 
  context = { 'complaint':complaint_data }
  return render(request, 'myHistory.html', context)

class EditComplaint(UserPassesTestMixin, UpdateView):
   model = Complaint
   fields = ('reportnumber', 'eventdate', 'event_type', 'device_problem', 'manufacturer', 
  'product_code', 'brand_name', 'exemption', 'patient_problem', 'event_text', 'document')  
   template = 'newcomplaint.html'
   def form_valid(self, request):
       complaint = request.user.complaint
       form = ComplaintForm(instance=complaint)
       if request.method == 'POST':
          form = ComplaintForm(request.POST, request.FILES, instance=complaint)
          if form.is_valid():
             form.save()
       context = {'form': form}
       return render(request, 'newcomplaint.html', context)

   def test_func(self):
       complain = self.get_object()

       if self.request.user == complain.user:
           return True
       raise Http404(_('This complain does not exist'))

我的历史模板:

<div class="col-lg middle middle-complaint-con">
        <i class="fas fa-folder-open fa-4x comp-folder-icon"></i>
        <h1 class="all-comp">My Complaints</h1>
        <p class="all-comp-txt">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>

        {%for c in complaint %}
        <a href="{% url 'Complaint' c.pk %}" style="color:black;">
            <div class="container comp-con-{{forloop.counter0}}">
                <p style="color: #D37A19; margin-left: -130px; margin-top: -5px;">Report number:</p>
                <p class="history-level-1">{{c.reportnumber}}</p>
                <p class="comp-title-1">{{c.event_type}}</p>
                <p class="comp-sub-1">{{c.event_text}}</p>
            </div>
        </a> {%endfor%}
    </div>

查看投诉详情的模板:

{% extends 'base2.html' %} {% load static %}{% csrf_token %}{% load crispy_forms_tags %}{% block content %}
    <p class="new-active"></p>

    <!-- Left Container -->
    <div class="col left-nav sidebar left-side-nav">
        <p class="navbar-brand medsplain-dash"><strong>MedsPlain</strong></p>

        <a href="dashboard.html"><i class="fas fa-desktop"></i><span>Dashboard</span></a>
        <a href="/Login/Profile/"><i class="fas fa-user"></i><span>Profile</span></a>
        <a href="complaints.html"><i class="fas fa-folder-open"></i><span>Complaints</span></a>
        <a href="/My-History/"><i class="fas fa-history"></i><span>History</span></a>
        <a href="/Login/Add-Complaint/"><i class="fas fa-folder-plus"></i><span>New</span></a>
        <a href="{% url 'Logout' %}" class="down"><i class="fas fa-sign-out-alt"></i><span>Log Out</span></a>

    </div>

    <!-- Middle Container -->
    <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="" method="POST" enctype="multipart/form-data">
            {% csrf_token %}
            <p class="sub-typ-wr">Submit Type</p>
            <a href="/Login/Add-Complaint/Document-Style/"><button type="button" class="btn btn-secondary document-btn">Document</button></a>

            <div class="rep-num">
                <label class="written-label" for="">Report Number</label>
                <div class="written-txt-field">{{form.reportnumber}}</div>
            </div>

            <div class="eve-dte">
                <label class="written-label" for="">Event Date</label>
                <div class="written-txt-field">{{form.eventdate}}</div>
            </div>

            <div class="eve-typ">
                <label class="written-label" for="">Event Type</label>
                <div class="written-txt-field">{{form.event_type}}</div>
            </div>

            <div class="dev-pro">
                <label class="written-label" for="">Device Problem</label>
                <div class="written-txt-field">{{form.device_problem}}</div>
            </div>

            <label class="written-label eve-txt" for="">Event Text</label>

            <div class="Manufacturer">
                <label class="written-label" for="">Manufacturer</label>
                <div class="written-txt-field">{{form.manufacturer}}</div>
            </div>

            <div class="pro-code">
                <label class="written-label" for="">Product Code</label>
                <div class="written-txt-field">{{form.product_code}}</div>
            </div>

            <div class="brand-name">
                <label class="written-label" for="">Brand Name</label>
                <div class="written-txt-field">{{form.brand_name}}</div>
            </div>

            <div class="exem">
                <label class="written-label" for="">Exemption</label>
                <div class="written-txt-field">{{form.exemption}}</div>
            </div>

            <div class="pat-pro">
                <label class="written-label" for="">Patient Problem</label>
                <div class="written-txt-field">{{form.patient_problem}}</div>
            </div>



            <div class="comp-textarea">{{form.event_text}}</div>
            <button type="button" class="btn btn-secondary attach-btn-1"><div class="fas fa-file-upload">{{form.document}}</div></button>
            <button type="submit" name="submit" class="btn btn-secondary save-btn-1"><i class="fas fa-save"></i> Save</button>
        </form>

    </div>

    <!-- Right Container -->
    <div class="col right-pro-con">
        <div class="img-cir">
            <form method='POST' action="" enctype="multipart/form-data">
                {% csrf_token %} {% if request.user.profile.profile_pic.url %}
                <img src={{request.user.profile.profile_pic.url}} alt="" width="100px" height="100px" class="pro-img"> {% else %}
                <img src="{% static 'profileimages/msi.jpg' %}" alt="" width="100px" height="100px" class="pro-img"> {% endif %}
                <p class="my-name">{{request.user.profile.first}}
                    <p>
                        <p class="my-email-id">{{request.user.profile.email}}</p>
            </form>
        </div>


        <a href="#" class="con-us">CONTACT US</a> {% endblock content %}

我的历史页面运行良好,但当我点击其中一张卡片查看投诉详情时,会显示:

我不知道为什么它说模板不存在,即使我什至没有在任何地方提到过投诉表格模板。

【问题讨论】:

  • 在您的view 中将template 属性更改为template_name。

标签: django django-models django-views django-forms django-templates


【解决方案1】:

属性不是template,而是template_name。到目前为止,您似乎使用的是早期版本。

如果您没有在 UpdateView 上定义 template_name 属性(目前正在发生这种情况),django 会自动尝试查找模板名称 &lt;app_name&gt;/&lt;model_name&gt;_&lt;form&gt;.html。

【讨论】:

    猜你喜欢
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多