2015-02-06 2 views
1

Я хочу перенаправить представление, чтобы оно отображало заголовок и id_number, но я получаю ошибку в заголовке.get() missing 1 обязательный позиционный аргумент: 'args', Django slug RedirectView

Модели:

from django.db import models 
from django.core.urlresolvers import reverse 
from autoslug import AutoSlugField 


class EntitiesNew(models.Model): 
    id = models.CharField(max_length=20, blank=True) 
    description = models.CharField(max_length=500, blank=True) 
    title = models.CharField(max_length=500, blank=True) 
    id_number = models.IntegerField(primary_key=True) 
    slug = AutoSlugField(populate_from='title', max_length=500) 

    class Meta: 
     managed = True 
     db_table = 'entities_new' 

    def get_absolute_url(self): 
     return reverse('entity-detail', kwargs={'slug': self.slug}) 

    def __unicode(self): 
     return self.title 

Просмотров:

from entities.models import EntitiesNew 
from django.views import generic 
from django.views.generic import TemplateView, RedirectView, ListView, DetailView 

class EntityNewView(generic.ListView): 
    template_name = 'entities/index.html' 
    context_object_name = 'entities_list' 
    def get_queryset(self): 
     return EntitiesNew.objects.order_by('-id_number')[:50] 


class EntityDetailView(TemplateView): 
    template_name = 'entities/detail.html' 
    def get_context_data(self, **kwargs): 
     context=super(EntityDetailView, self).get_context_data(**kwargs) 
     context['entity']=EntitiesNew.objects.get(pk=self.kwargs.get('id_number', None)) 
     return context 

class EntityRedirectDetailView(RedirectView): 

    def get(self, request, args, **kwargs): 
     id_number = self.kwargs.get('id_number', None) 
     entity = EntitiesNew.objects.get(pk=id_number) 
     self.url = '/entities/%s-%s' % (entity.id, entity.slug) 
     return super(EntityRedirectDetailView, self).get(request, args, **kwargs) 

URLs:

from django.conf.urls import patterns,url 
from entities import views 

urlpatterns = [ 
    url(r'^$', views.EntityNewView.as_view(), name='entities'), 
    url(r'^(?P<id_number>\d+)/$', views.EntityRedirectDetailView.as_view(), name='entity-redirect'), 
    url(r'^(?P<id_number>\d+)-(?P<slug>\w+)/$', views.EntityDetailView.as_view(), name='entity-detail'), 

] 

Любые предложения? благодаря

+0

Что такое ошибка? – Selcuk

+0

это ошибка, которую я получаю: TypeError at/entities/12786692/ get() missing 1 обязательный позиционный аргумент: 'args' – Torostar

ответ

2

Вы пропустили * в сигнатуре функции получим:

def get(self, request, *args, **kwargs): 
+0

Спасибо Даниэлю, глупая ошибка от меня ... однако теперь, если я нажму на один из отображаемых объектов I 'm перенаправлено на пример: entity/Samuel% 20Nalot- – Torostar

+0

Я не совсем уверен, что вы говорите: этот код перенаправит вас на/entity/ - /. –

+0

Да, это то, что я пытаюсь сделать ... но если я нажму на объекты, отображаемые в соответствии с набором get_query EntityNewView, он перенаправляет на объекты url/12786445- пропуская часть ... и страницу не найдена (404) – Torostar