3

DjangoのListViewジェネリッククラスの出力にSlugFieldを使用してリンク(つまりhref)を作成するにはどうすればよいですか?今、私は以下のコードを使用してデータベース内のすべての人物をリストすることができますが、クリックするとslugを使用するリンクに人の説明が表示されます。Djangoの汎用リストビュークラスでslugfieldを使用してリンクを作成するにはどうすればよいですか?

models.py 
class Person(models.Model): 
    first_name = models.CharField(max_length=30) 
    last_name = models.CharField(max_length=30) 
    slug = models.SlugField(max_length=50) 
    description = models.TextField() 

views.py 
class PersonList(ListView): 
    model = Person 

person_list.html 
<ul> 
{% for person in object_list %} 
    <li>{{ person.first_name }}&nbsp{{ person.last_name }}</li> 
{% endfor %} 
</ul> 
+0

https://stackoverflow.com/questions/15080083/django-url-slug-for-detail-page – hansTheFranz

+0

@hansTheFranz質問は一般的なビューに固有です。 – Bootstrap4

答えて

1

リストビューで何もする必要はありません。 urls.pyにURLを追加して、あなたの人の詳細を表示する必要があります。そして、テンプレート内のURLを参照し、スラグ渡し:

app/urls.py

from . import views 

urlpatterns = [ 
    # ... other urls 
    url(
     r'^person/(?P<slug>[a-z0-9-]+)$', # Match this 
     views.PersonDetailView.as_view(), # Call this view 
     name='person_detail' # Name to use in template 
    ) 
] 

app/views.py

from django.views import generic 
from .models import Person 

class PersonDetailView(generic.DetailView): 
    model = Person 

app/templates/app/person_list.html:これはhereを働く理由

が参照を(見てスラッグ用)。

関連する問題