正在加载Django视图/ URLS页面

时间:2012-06-17 11:19:51

标签: python django django-views

多年来一直困扰着这个。目前正在学习Django并在其他网站上做了一些比特。开始构建我自己的网站,并坚持使用views / URLS。

我已经构建了一个名为“博客”的应用,我希望在其中显示新闻帖子。

到目前为止,我已将所有博客项目加载到一个工作正常的模板上。但是,当我尝试单击“阅读更多”时,页面不会进入帖子自己的页面。但是,当它显示要加载的页面时,它会告诉您它将加载正确的URL。所以它正在拉动我想要它的方式,但是当你点击按钮它就会停留在同一页面上。

如果我在主页上加载博客帖子,我设法让它工作得很完美。但是我希望他们加载/ blog /显然我不希望它成为我的主页。

我已经阅读了所有文档,它与我一直关注的教程略有不同。无论如何这里是我的一些代码,真的希望有人可以帮助我!

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

// MODEL

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
        })

谢谢,

约什

2 个答案:

答案 0 :(得分:2)

您的网址r'blog/'最后没有$,所以我认为django将始终匹配此条目而不是r'blog/(?P<slug>[-\w]+)/$'条目。我会尝试撤消订单,看看是否有帮助:

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

我之前遇到过这个问题,花了很多时间试图解决这个问题。

答案 1 :(得分:0)

您的第一个urlconf条目是捕获所有以“blog”开头的网址。最后放一个$来终止比赛。