0

エラーが何を示しているのかわかりません。

models.py

class Page(models.Model):
    title = models.CharField(max_length=30)
    slug = models.SlugField()
    content = models.TextField()

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

def __unicode__(self):
    return self.title

def __repr__(self):
    return self.name

ビュー.py

def page_view(request, **kwargs):
    slug = kwargs.get('slug')
    page = get_object_or_404(Page, slug=slug)   
    content = page.content
    title = page.title
    return render_to_response("base.html", {"content":content, "title":title})  

urls.py

url(r'^(?P<page>)/$', page_view),

管理インターフェイスから新しいページを作成すると、非常に奇妙な URL が表示されます。127.0.0.1:3020/admin/r/7/3/ <-- なぜこのようになっているのかわかりません。チップ?作成したページにアクセスすると、404 が返されます。

4

2 に答える 2

0
def page_view(request, **kwargs):
    slug = kwargs.get('page') # hello page! I found you
...

urls.py にpageない for 変数を使用するためslug

url(r'^(?P<page>)/$', page_view),

または、次のようにビューを書くことができます

def page_view(request, page=None):
    page_from_db = get_object_or_404(Page, slug=page)
    return render(request, "base.html", {"page": page_from_db})

tplで

{{ page.content }}

そして、1.4を使用する場合from django.shortcuts import render

コンテキストを使用して自動的にレンダリングする

于 2012-07-24T09:22:24.717 に答える
0

変化する:

def get_absolute_url(self):
    return ('page', (), {
    'slug': self.slug,
    'id': self.id,
    }) 

次のようなものに:

def get_absolute_url(self):
    return "/APP_URL_PATH/%s/" % self.slug # or use id, there's no need for two unique identifiers

def my_view(request, slug, id):
    page = get_object_or_404(pk=id)

次のようなものに:

def my_view(request, **kwargs):
    slug = kwargs.get('slug')
    page = get_object_or_404(Page, slug=slug)

コピペのせいでインデントが悪いのかもしれません。投稿を編集した方がいいかもしれません。URL キャプチャ グループのアイデアについては、django のドキュメントを参照してください。

于 2012-07-23T14:07:39.563 に答える