2010-08-03 5 views
0

Donc je suis en train de faire le tutoriel de Django Practical Projects et je suis arrivé très loin.django tutorial coincé

Je possède ce code:

def get_absolute_url(self): 
    return ('coltrane_entry_detail',(), {'year': self.pub_date.strftime("%Y"), 
             'month': self.pub_date.strftime("%b").lower(), 
             'day': self.pub_date.strftime("%d"), 
             'slug': self.slug }) 
get_absolute_url = models.permalink(get_absolute_url) 

je reçois une erreur Indentation.

Si je mets un retrait que je reçois un working/weblog/url mais si je clique sur les liens "Read more", je atterrirai toujours sur la même page/weblog/et not/weblog/date/article.

Si vous connaissez le tutoriel, peut-être vous savez l'erreur sinon voici tous les fichiers:

projet urls:

from django.conf.urls.defaults import * 
from Myproject.views import * 
from django.views.generic.simple import direct_to_template 
from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 

#Coltrane Project URlpatterns: 

    (r'^search/$', 'MyProject.search.views.search'), 
    (r'^weblog/$', include('coltrane.urls')), 

urls Coltrane:

from django.conf.urls.defaults import * 
from coltrane.models import Entry 

entry_info_dict = { 
'queryset': Entry.objects.all(), 
'date_field': 'pub_date', 
} 

#Coltrane Project URlpatterns: 

urlpatterns = patterns('django.views.generic.date_based', 

    (r'^$', 'archive_index', entry_info_dict, 'coltrane_entry_archive_index'), 
    (r'^(?P<year>\d{4})/$', 'archive_year', entry_info_dict, 'coltrane_entry_archive_year'), 
    (r'^(?P<year>\d{4})/(?P<month>\w{3})/$', 'archive_month', entry_info_dict, 'coltrane_entry_archive_month'), 
    (r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/$', 'archive_day', entry_info_dict, 'coltrane_entry_archive_day'), 
    (r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$', 'object_detail', entry_info_dict, 'coltrane_entry_detail'), 
) 

Modèle:

import datetime 

from django.contrib.auth.models import User 
from django.db import models 

from markdown import markdown 
from tagging.fields import TagField 


class Category(models.Model): 
title = models.CharField(max_length=250, help_text='Maximum 250 characters.') 
slug = models.SlugField(unique=True, help_text='This is the shortname that is created. Must be unique!') 
description = models.TextField() 

class Meta: 
    ordering = ['title'] 
    verbose_name_plural = "Categories" 

def __unicode__(self): 
    return self.title 

def get_absolute_url(self): 
    return "/categories/%s/" %self.slug 

class Entry(models.Model): 
LIVE_STATUS = 1 
DRAFT_STATUS = 2 
HIDDEN_STATUS = 3 
STATUS_CHOICES = (
    (LIVE_STATUS, 'Live'), 
    (DRAFT_STATUS, 'Draft'), 
    (HIDDEN_STATUS, 'Hidden'), 
) 
#Core Fields. 

title = models.CharField(max_length=250, help_text='Maximum 250 characters.') 
excerpt = models.TextField(blank=True, help_text='A short summary of the entry. Optional!') 
body = models.TextField() 
pub_date = models.DateTimeField(default=datetime.datetime.now) 

#Fields to store generated HTML. 

excerpt_html = models.TextField(editable=False, blank=True) 
body_html = models.TextField(editable=False, blank=True) 

#Metadata 

author = models.ForeignKey(User) 
enable_comments = models.BooleanField(default=True) 
featured = models.BooleanField(default=False) 
slug = models.SlugField(unique_for_date='pub_date') 
status = models.IntegerField(choices=STATUS_CHOICES, default=LIVE_STATUS, help_text="Only entries with live status will be publicly displayed") 

#Categorization 
categories = models.ManyToManyField(Category) 
tags = TagField(help_text="Separate tags with spaces.") 


class Meta: 
    ordering = ['pub_date'] 
    verbose_name_plural = "Entries" 

def __unicode__(self): 
    return self.title 

def save(self, force_insert=False, force_update=False): 
    self.body_html = markdown(self.body) 
    if self.excerpt: 
    self.excerpt_html = markdown(self.excerpt) 
    super(Entry, self).save(force_insert, force_update) 

def get_absolute_url(self): 
    return ('coltrane_entry_detail',(), {'year': self.pub_date.strftime("%Y"), 
             'month': self.pub_date.strftime("%b").lower(), 
             'day': self.pub_date.strftime("%d"), 
             'slug': self.slug }) 
    get_absolute_url = models.permalink(get_absolute_url) 
+2

Utiliser une indentation appropriée! Un seul espace n'est pas suffisant pour voir si vous avez tort, d'où l'IndentationError. Utilisez quatre espaces. –

+0

si vous faites référence à: def get_absolute_url (auto): retour (« coltrane_entry_detail » pas vrai, il est juste affiché ici avec un tiret Dans mon code réel, il a 4 l'espace avant le retour – MacPython

+0

trouvé mon erreur.. : Il était dans le urls.py: (r^blog/$ ' au lieu de (r^weblog /' – MacPython

Répondre

0

Voir les e commentaires ci-dessus, j'ai trouvé mon erreur. Je pense que la seule façon de clore ma propre question est d'y répondre.

+0

ne fonctionne pas bien. – MacPython