2012-06-17 6 views
1

Vous êtes bloqué depuis des lustres. J'apprends actuellement Django et j'ai fait quelques passages sur d'autres sites. Commencer à construire mon propre site et rester bloqué avec les vues/URLs.vues Django/page URLS loading now

J'ai créé une application appelée «blog» dans laquelle je souhaite afficher des articles de presse. Jusqu'à présent, j'ai chargé tous les éléments du blog sur un modèle qui fonctionne correctement. Toutefois, lorsque j'essaie de cliquer sur «Lire plus», la page ne passe pas à la page personnelle des messages. Cependant, là où il affiche la page qu'il va charger vous indique qu'il va charger l'URL correcte. Donc, il tire la limace à travers comment je le veux, mais quand vous cliquez sur le bouton, il reste sur la même page.

Je parviens à le faire fonctionner parfaitement si je reçois les billets de blog à charger sur la page d'accueil. Cependant je veux les charger sur/blog/car évidemment je ne veux pas que ce soit ma page d'accueil.

J'ai lu toute la documentation et c'est légèrement différent du tutoriel que j'ai suivi. De toute façon, voici une partie de mon code, j'espère vraiment que quelqu'un pourra m'aider!

from django.http import HttpResponse 
from django.shortcuts import render_to_response, get_object_or_404 
from django.template import RequestContext 

from blog.models import Blog, NewsPost 

def blog_index(request): 
    blogs = Blog.objects.filter(active=True) 

    return render_to_response('blog/index.html', { 
     'blogs':blogs, 
    }, context_instance=RequestContext(request)) 

def blog(request, slug): 
    blog = get_object_or_404(Blog, active=True, slug=slug) 

    return render_to_response('blog/blog_post.html', { 
     'blogs': blogs 
    }, context_instance=RequestContext(request)) 






url(r'blog/', 'blog.views.blog_index', name="blog_index"), 
    url(r'blog/(?P<slug>[-\w]+)/$', 'blog.views.blog', name="blog"), 

// MODÈLE

class Blog(TimeStampedActivate): 
    title = models.CharField(max_length=255, help_text="Can be anything up to 255 character") 
    slug = models.SlugField() 
    description = models.TextField(blank=True, help_text="Give a short description of the news post") 
    content = models.TextField(blank=True, help_text="This is the main content for the news post") 
    user = models.ForeignKey(User, related_name="blog") 

    def __unicode__(self): 
     return self.title 

    @models.permalink 
    def get_absolute_url(self): 
     return ('blog',(), { 
      'slug': self.slug 
     }) 

Merci,

Josh

Répondre

2

Votre URL r'blog/' ne dispose pas d'un $ à la fin, donc je pense que django toujours correspondre à cette entrée plutôt que l'entrée r'blog/(?P<slug>[-\w]+)/$'. Je vais essayer d'inverser l'ordre et voir si cela aide:

url(r'blog/(?P<slug>[-\w]+)/$', 'blog.views.blog', name="blog"), 
url(r'blog/', 'blog.views.blog_index', name="blog_index"), 

J'ai eu ce problème avant et a passé de nombreuses heures à essayer de comprendre.

+0

OUI !! Ca a marché, sérieusement merci beaucoup !!!!! J'apprécie beaucoup! :) – JDavies

+0

Je suis content que ma frustration puisse aider quelqu'un d'autre :) – Nathan

0

Votre première entrée urlconf capture toutes les URL commençant par "blog". Mettez un $ à la fin pour terminer le match.