3

これが私のモデルクラスです。url()ここでは、作成者プロファイルの URL 文字列を返す新しい getter メソッドを追加しました。しかし、html テンプレート ファイルでこのメソッドを呼び出すと、空が表示されます。

ここに私の使用例があります:

オーサーモデルクラス:

from django.db import models
import re

class Author(models.Model):
    salutation = models.CharField(max_length=10)
    name = models.CharField(max_length=64)
    email = models.EmailField()
    headshot = models.ImageField(upload_to='author_headshots')

    # On Python 3: def __str__(self):
    def __unicode__(self):
        return self.name

    @property
    def url(self):
        return re.sub(r"[\s|\.|\-|\_|\'|\+]+", "-", self.name)

Authorオブジェクト コンテキストをビュー メソッドからテンプレートに渡しました:

from django.shortcuts import render

from author.models import Author

def index(request):
    authors = Author.objects.order_by('-name')
    return render(request, 'home.html', {
                                         'authors': authors
                                         })

そして、テンプレート(home.html)で以下のように使用します:

{% if authors %}
    {% for author in authors %}
    <h2><a href="author/{{ author.url }}/">{{ author.name }}</a></h2>
    <p>About author {{ author.name }} here</p>
    {% endfor %}
{% else %}
No Authors
{% endif %}

出力の取得:

<h2><a href="author//">XXX</a></h2>
<p>About author XXX here</p>
...

期待:

<h2><a href="author/xxx/">XXX</a></h2>
<p>About author XXX here</p>
...
4

1 に答える 1