【问题标题】:How to display model fuction in Django template如何在 Django 模板中显示模型功能
【发布时间】:2019-10-09 20:53:07
【问题描述】:

我想做的是从我的模型中获取数据以显示引导模式。我现在正在做的是尝试将函数数据传递到视图中,并通过我试图在模态中显示 with 的视图。我遇到的问题是:

第 47 行的块标记无效:“show_profile”,预期为“empty”或“endfor”。您是否忘记注册或加载此标签?

当我尝试传递数据时我做错了什么,或者我的标签或其他东西有问题吗?

型号

class mentee(models.Model):
    application_date_time = models.DateTimeField()
    # status = models.CharField(max_length=30)
    fname = models.CharField(max_length=30)
    full_name = models.CharField(max_length=30)
    lname = models.CharField(max_length=30)
    email = models.CharField(max_length=30)
    phone = models.CharField(max_length=30)
    bio = models.CharField(max_length=1700)
    gender = models.CharField(max_length=30)
    objectives = models.CharField(max_length=100)
    years_of_experience = models.CharField(max_length=20)
    university = models.CharField(max_length=30)
    graduation_year = models.IntegerField()
    major = models.CharField(max_length=30)
    class_standing = models.CharField(max_length=30)
    city = models.CharField(max_length=30)
    country = models.CharField(max_length=30)
    student_type = models.CharField(max_length=30)
    profile_pic = models.CharField(max_length=30)
    linkedin = models.CharField(max_length=30)
    GitHub = models.CharField(max_length=30)
    website = models.CharField(max_length=30)
    resume = models.CharField(max_length=100)
    area_of_concentration = models.CharField(max_length=30)
    roles_of_interest = models.CharField(max_length=100)
    meet_in_person = models.BooleanField()
    preferred_years_of_experience = models.CharField(max_length=20)
    organization_of_interest = models.CharField(max_length=30)
    area_of_expertise = models.CharField(max_length=100)
    skills_desired = ArrayField(ArrayField(models.CharField(max_length=100)))
    gender_preference = models.CharField(max_length=30)
    time_preference = ArrayField(ArrayField(models.CharField(max_length=30)))
    location_preference = ArrayField(ArrayField(models.CharField(max_length=30)))
    preference_notes = models.CharField(max_length=1700)

    def showprofile(full_name):
       return mentee.objects.values().filter(full_name="Katha Benterman")

HTML


             <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
                <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                    <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                    </div>
                    <div class="modal-body">
                    {% show_profile %}
                    </div>
                    <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                    </div>
                </div>
                </div>
            </div>
def home(request):
    if request.method == 'GET':
        data = mentee.objects.all()
        profiles = mentee.showprofile(mentee.full_name)
        stu = {
            "full_name": data,
            "show_profile": profiles

        }
        return render(request, 'main/index.html', stu)

【问题讨论】:

  • 首先,您的 showprofile 方法缺少 self 参数

标签: python django django-models django-templates


【解决方案1】:

改变这一行

{% show_profile %}

{% for i in show_profile %}
    {{ i.full_name }}
{% endfor %}

你的方法来自

def showprofile(full_name):
       return mentee.objects.values().filter(full_name="Katha Benterman")

def showprofile(self,full_name):
       return self.objects.filter(full_name=fullname)

【讨论】:

  • 我做了这些更改,但随后我收到此错误Invalid block tag on line 47: 'show_profile.full_name', expected 'empty' or 'endfor'. Did you forget to register or load this tag?
  • 我在使用 {%%} 时都使用了这两种方法 当我使用 {{}} 时出现上述错误,我收到此错误Could not parse the remainder: ' %' from 'show_profile.full_name %'
  • 所以我刚刚解决了这个问题,但模式中没有显示任何内容,有点困惑
  • 得到属性错误'Manager' object has no attribute 'showprofile'
  • 现在检查,并删除我说要更改的上一个
【解决方案2】:

{% show_profile %} 将调用需要注册的模板标签,因此您会看到错误。您想显示 {{ show_profile.full_name }}。

此外,你的模型方法应该改变:

def showprofile(self, full_name):
    return self.objects.filter(full_name=fullname)

假设您不只是想在当前过滤器中放出非常具体的名称。

【讨论】:

    猜你喜欢
    • 2017-11-13
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 2015-05-24
    • 2017-02-15
    相关资源
    最近更新 更多