1

申し訳ありませんが、私はDjangoとプログラミング全般に不慣れですが、モデルから変数を呼び出して特定のページに表示しようとしています。URL を example.com/archive/book_slug にマップし、タイトル、著者、ISBN などの詳細が必要です。ブログ アプリを使用して、モデルを管理ページに登録しました。

URL に移動すると、何も表示されないテンプレートで問題が発生します。本のタイトルをヘッダーに表示したい。誰でも助けてもらえますか?

ブログ/models.py

from django.db import models

class Book_item(models.Model):
   book_title = models.CharField(max_length=255, blank=False)
   book_author = models.CharField(max_length=255)   
   book_publisher = models.CharField(max_length=255, blank=True)
   book_date_published = models.IntegerField(blank=True)
   book_isbn = models.IntegerField(blank=True)
   book_slug = models.SlugField(max_length=255, unique=True, blank=False,
                                primary_key=True)
   book_body = models.TextField(blank=True)

def __unicode__(self):
    return self.book_title

ブログ/views.py

from django.shortcuts import render, get_object_or_404
from blog.models import Book_item

# view for /achive/; template at archive.html
def archive_index(request):
    book_info = Book_item.objects.all()
    context = {'book_info' : book_info} 
    return render(request, 'blog/archive.html', context)

# view for /archive/book_title; 404 if no title; template at book_detail.html
def book_details(request, book_slug):
    bookdeets = Book_item.objects.filter(book_slug=book_slug)
    details = get_object_or_404(Book_item, book_slug=book_slug)
    context = {'details' : details, 'bookdeets' : bookdeets}
    return render(request, 'blog/book_detail.html', context)

ブログ/urls.py

from django.conf.urls import patterns, url
from blog import views

urlpatterns = patterns('',

    # archive index at /archive/                   
    url(r'^$', views.archive_index),

    # book deatils at /archive/book_title
    url(r'^(?P<book_slug>[\w-]+)/$', views.book_details),

 )

ブログ/book_detail.html

{% extends "base.html" %}

{% block title %}{{Book_item.book_title}}{% endblock %}

{% block headercontent %}
<h1>{{Book_item.book_title}}</h1>
{% endblock %}
4

2 に答える 2

3

試す;

<h1>{{details.book_title}}</h1>

レスポンス コンテキストの「details」変数を介して、書籍の詳細をテンプレートに渡しました。

余談ですが、bookdeets = Book_item.objects.filter(book_slug=book_slug)下の get_object_or_404 メソッドを介して直接必要な本を既に取得しているため、実際には行を削除することもできます。slug が一意であることを考えるとfilter、単一要素のクエリセットを返すだけなので、これらは同じオブジェクトを取得するための 2 つの異なる方法です (get_object_or_404 は、何も見つからない場合に 404 を返す便利な「ショートカット」であることを除いて)。

于 2013-11-08T21:38:19.607 に答える