【问题标题】:get() missing 1 required positional argument: 'args', Django slug RedirectViewget() 缺少 1 个必需的位置参数:'args',Django slug RedirectView
【发布时间】:2015-04-06 14:42:19
【问题描述】:

我想重定向一个视图,以便它显示标题和 id_number,但标题中出现错误。

型号:

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)

网址:

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'),

]

有什么建议吗? 谢谢

【问题讨论】:

  • 这是我得到的错误:TypeError at /entities/12786692/get() 缺少 1 个必需的位置参数:'args'

标签: python django get slug


【解决方案1】:

您错过了 get 函数签名中的 *

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

【讨论】:

  • 谢谢丹尼尔,我犯了一个愚蠢的错误......但是现在如果我点击显示的实体之一,我将被重定向到示例:entities/Samuel%20Nalot-
  • 我不太确定您在说什么:该代码会将您重定向到 /entities/-/.
  • 是的,这就是我想要做的......但如果我点击根据 EntityNewView 的 get_queryset 显示的实体,它会重定向到 url 实体/12786445-跳过 部分...显示找不到页面 (404)
  • 实体真的有蛞蝓吗?
  • 显然不是...我尝试使用 slug = AutoSlugField(populate_from='title', max_length=500) 填充模型中的 slug 字段,这可以在 models.py 中看到。 ..但看起来它不能正常工作...我是 Django 中的菜鸟,所以如果您对如何使用标题值正确填充 slug 有任何建议,请告知...标题也不是唯一值,因此我想要将 id_number 与 slug 结合起来......
猜你喜欢
  • 1970-01-01
  • 2020-12-20
  • 1970-01-01
  • 2021-12-21
  • 2018-06-20
  • 2022-01-27
  • 2017-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多