給404我想用一個相當標準/ <應用> /<年> /<個月> /<天>/<塞>模型使用固定鏈接在Django。但是,我得到任何的附加信息date_based在object_detail並Django的
urls.py 404包括races.urls使用
(r'^races/', include('races.urls')),
我的種族/ urls.py如下:
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'),
)
我的種族/模型。 py已有
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 })
測試比賽肯定出現在DB
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 |
+----+---------------------+------------+----------+-----------+---------------------+
但是,URL http://localhost:8000/races/2011/02/20/race-your-pace-half不起作用。
我確定這是相當明顯的事情,需要一段時間才能完成上述工作。
另一方面,永久鏈接也不起作用 - 即{{race.get_absolute_url}}在我的模板中顯示爲空白,我只是不知道它是我的模型還是我的URLconf是錯誤的。
是的,除了從查詢集中刪除.all,也解決了404問題。然後,我得到了一個帶有空標記的頁面,但那是因爲我沒有設置template_object_name(我在模板中使用race而不是object)。 – 2011-02-27 11:54:19