0

私が書いたコードがいくつかあり、その目的に対して完全に正常に動作します。

from django.shortcuts import get_object_or_404
from django.views.generic import ListView
from cab.models import Language

class LanguageDetail(ListView):


    def get_queryset(self):
        slug = self.kwargs['slug']
        language = get_object_or_404(Language, slug=slug)
        return language.snippet_set.all()

    paginate_by = 20
    template_name = 'cab/language_detail.html'

    def get_context_data(self, **kwargs):
        slug = self.kwargs['slug']
        language = get_object_or_404(Language, slug=slug)
        context = super(LanguageDetail, self).get_context_data(**kwargs)
        context['language'] = language
        return context

私の問題は、2 つの関数で 2 行のコードを繰り返していることです。それが気に入らないのです。

slug = self.kwargs['slug']
language = get_object_or_404(Language, slug=slug)

どうすればそれを回避できますか?? 前もって感謝します。

4

1 に答える 1

1

このようなことを意味しますか?

def get_slug(self, name):   
    slug = self.kwargs[name]
    return get_object_or_404(Language, slug=slug)

として使用できますlanguage = self.get_slug('slug')

kwargs含まれていない場合name、エラーがスローされることに注意してください。これを防ぐには、次のようにします。

slug = self.kwargs.get(name, None)
if slug is not None:
    ...
于 2013-01-29T01:23:28.353 に答える