[英]redundant django code
I have some code that I wrote and it works perfectly fine for its purpose. 我有一些我编写的代码,因此可以很好地达到目的。
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
My problem is that I repeated two lines of code in the two functions and I don't like that. 我的问题是我在两个函数中重复了两行代码,但我不喜欢这样。
slug = self.kwargs['slug']
language = get_object_or_404(Language, slug=slug)
how can i avoid that ?? 我如何避免这种情况? Thanks in advance.
提前致谢。
Do you mean something like this? 你的意思是这样吗?
def get_slug(self, name):
slug = self.kwargs[name]
return get_object_or_404(Language, slug=slug)
Can use as language = self.get_slug('slug')
可以用作
language = self.get_slug('slug')
Bear in mind that if kwargs
doesn't contain name
then it'll throw an error. 请记住,如果
kwargs
不包含name
则将引发错误。 To prevent this you could do something like: 为了防止这种情况,您可以执行以下操作:
slug = self.kwargs.get(name, None)
if slug is not None:
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.