1

何年もの間これに固執しています。現在、Djangoを学習しており、他のサイトでいくつかの作業を行っています。私自身のサイトを構築し始めて、ビュー/URLで立ち往生しています。

ニュース記事を表示したい「ブログ」というアプリを作成しました。

これまでのところ、正常に機能しているテンプレートにすべてのブログアイテムをロードしました。ただし、[続きを読む]をクリックしようとすると、ページが投稿自体のページに移動しません。ただし、ロードするページが表示される場所には、正しい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"),

//モデル

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

ありがとう、

ジョシュ

4

2 に答える 2

2

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

私は以前にその問題を抱えていて、それを理解しようと何時間も費やしました。

于 2012-06-17T11:42:22.483 に答える
0

最初のurlconfエントリは、「blog」で始まるすべてのURLをキャッチしています。試合を終了するには、最後に$を付けます。

于 2012-06-17T11:42:44.207 に答える