Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于日期的对象详细信息,在django中给出404_Django_Django Urls_Django Generic Views - Fatal编程技术网

基于日期的对象详细信息,在django中给出404

基于日期的对象详细信息,在django中给出404,django,django-urls,django-generic-views,Django,Django Urls,Django Generic Views,我试图在Django中使用permalinks,使用的是相当标准的/不起作用的 我相信这是相当明显的,这需要一段时间才能让上面的工作 另一方面,permalinks也不起作用——例如,{{race.get_absolute_url}在我的模板中是空白的,我只是不知道是我的模型还是我的URLconf错了。我从来没有使用过通用视图,但我想这里有一个无错误的404: try: tt = time.strptime('%s-%s-%s' % (year, month, day),

我试图在Django中使用permalinks,使用的是相当标准的/不起作用的

我相信这是相当明显的,这需要一段时间才能让上面的工作


另一方面,permalinks也不起作用——例如,{{race.get_absolute_url}在我的模板中是空白的,我只是不知道是我的模型还是我的URLconf错了。

我从来没有使用过通用视图,但我想这里有一个无错误的404:

try:
    tt = time.strptime('%s-%s-%s' % (year, month, day),
                       '%s-%s-%s' % ('%Y', month_format, day_format))
    date = datetime.date(*tt[:3])
except ValueError:
    raise Http404
我想知道您的
info\u dict
是否覆盖了任何“真实”输入,因为我注意到您正在为每个必填字段传递字符串参数(
'day':'day'

删除
'day'、'year'和'month'
作为
info\u dict
中的参数,因为您的URL已经捕获并发送了这些参数

在那之后,我想知道你是否会得到一个
AttributeError
,因为
Race.objects.all
是一个函数,而不是
QuerySet


让我知道结果如何

是的,这以及从queryset中删除.all解决了404问题。然后我得到了一个标记为空的页面,但这是因为我没有设置模板\对象\名称(我在模板中使用的是race而不是object)。
from django.conf.urls.defaults import *
from django.views.generic import date_based
from races.models import Race

info_dict = { 
    'date_field': 'date',
    'month_format': '%m',
    'queryset': Race.objects.all,
    'year': 'year',
    'month': 'month',
    'day': 'day',
}

urlpatterns = patterns('',
    (r'^$', 'races.views.index'),
    (r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})$', 
        date_based.archive_day, dict(info_dict)),
    url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<slug>[-\w]+)', 
        date_based.object_detail, 
        dict(info_dict, slug_field='slug', slug='slug', 
            template_name='races/race_detail.html'), 
        name = 'race_detail'),
)
from django.db import models
from django.template.defaultfilters import slugify

class Race(models.Model):
    STATUS_CHOICES = (
        ('Completed', 'Completed'),
        ('Entered', 'Entered'),
        ('Planned', 'Planned'),
        ('DNS', 'DNS'),
        ('DNF', 'DNF'),
    )
    name = models.CharField(max_length=100)
    date = models.DateField('race date')
    time = models.TimeField('race duration', null = True)
    status = models.CharField(max_length=10, choices = STATUS_CHOICES) 
    slug = models.SlugField(max_length=100, editable = False)

    def save(self, *args, **kwargs):
        if not self.id:
            self.slug = slugify(self.name)
        super(Race, self).save(*args, **kwargs)

    def __unicode__(self): 
        return self.name 

    @models.permalink
    def get_absolute_url(self):
        return('race_detail', (), { 
            'year': self.date.year,
            'month': self.date.month,
            'day': self.date.day, 
            'slug': self.slug })
mysql> select * from races_race;
+----+---------------------+------------+----------+-----------+---------------------+
| id | name                | date       | time     | status    | slug                |
+----+---------------------+------------+----------+-----------+---------------------+
|  1 | Race Your Pace Half | 2011-02-20 | 01:41:15 | Completed | race-your-pace-half |
+----+---------------------+------------+----------+-----------+---------------------+
try:
    tt = time.strptime('%s-%s-%s' % (year, month, day),
                       '%s-%s-%s' % ('%Y', month_format, day_format))
    date = datetime.date(*tt[:3])
except ValueError:
    raise Http404