А если так.
url(r'^categories/(?P<slug1>[^\.]+)/(?P<slug2>[^\.]+)/$', view_2_categories, name='category_2')
Вьюха
def view_2_categories(request, slug1, slug2):
categories = Category.objects.filter(slug__in=[slug1,slug2])
return render_to_response('home.html', { 'categories': categories})
А в шаблоне использовать template tag, что нибудь типо
@register.assignment_tag
def get_2_blog(category):
return Blog.objects.filter(category=category).order_by('-timestamp')[:2]
и в шаблоне
{% for cat in categories %}
{% get_2_blog cat as cat_blogs %}{% for blog in cat_blogs %}выводим ньюс {% endfor %}
{% endfor %}
Или если код никому показывать не будете, можно просто у категории метод написать
def get_2_blog(self):
return Blog.objects.filter(category=self).order_by('-timestamp')[:2]
Тогда в шаблоне
{% for cat in categories %}
{% for blog in cat.get_2_blog %}выводим ньюс {% endfor %}
{% endfor %}
Но далеко не факт что это самое лучшее решение. Не стреляйте в музыканта (с)

UPD: И вообще уже на CBV можно по-модному
class Category2View(ListView):
template_name = "home.html"
def get_queryset(self):
return Category.objects.filter(slug__in=[self.kwargs['slug1'],self.kwargs['slug2']])
Урл соответственно
url(r'^categories/(?P<slug1>[^\.]+)/(?P<slug2>[^\.]+)/$', Category2View.as_view(), name='category_2')
Ну и в шаблоне итерацию тогда делать не по categories, а по object_list {% for cat in object_list %} остальное так же