私は地元の宝飾店のデモウェブサイトを構築しており、ジュエリーブランドのリスト(ListView)を作成し、それぞれの説明(DetailView)を別のページにリンクしようとしています。私はListViewとDetailViewをリンクさせようとしっかりした15時間を過ごしました。何も修正していません。これらは、私が働いている図である。DetailViewとListViewを一緒にリンクするにはどうしたらいいですか?
ビューこの最初のビューのために
class BrandView(ListView):
template_name = 'products.html'
queryset = models.Brand.objects.order_by('brand_name')
context_object_name = 'brand_list'
、私は、それに対応する詳細ページへのリンクとしてクエリセットから各オブジェクトを表示するテンプレートを作成しました次のビューで表現する必要があります。私も通常の関数としての最後のビューを書いてみました
class TextView(DetailView):
template_name = 'brands/brand_text.html'
context_object_name = 'brand'
def get(self, request, slug):
# Grabs the Brand object that owns the given slug
brand = models.Brand.objects.get(slug = slug)
# renders self.template_name with the given context and model object
return render(request, self.template_name, self.context_object_name)
が、これはどちらか何かを達成していません。
def text_view(request, slug):
brand = models.Brand.objects.get(slug = slug)
return render(request, 'brands/brand_text.html', {'brand': brand,})
基本的に、ListViewからオブジェクトをクリックすると、オブジェクトのスラッグがURLに追加されますが、ページは変更されません。だから、どのようにしてDetailViewがListViewから与えられた情報を取得するように2つのビューを正常にリンクできますか?
おそらく私のテンプレートが便利証明するかもしれない:
テンプレート
brand_text.html
{% block content %}
<div class= "brands" style="animation: fadein 1.5s 1;">
<p>
<a class = "nav_link" href="{% url 'products' %}">Back</a>
</p>
</div>
<div class= "brand_descriptions">
<p>{{ brand.description }}</p>
</div>
{% endblock %}
products.html
{% block content %}
<div class= "brands" style="animation: fadein 1.5s 1;">
{% for item in brand_list %}
<p>
<a class = "nav_link" href="{% url 'brand_text' item.slug %}">{{ item.brand_name }}</a>
</p>
{% endfor %}
</div>
{% endblock %}
UPDATE 2016年8月2日:
URLパターン
url(r'^products/', BrandView.as_view(), name = 'products'),
url(r'^products/(?P<slug>[-\w]+)', TextView.as_view(), name = 'brand_text'),
(!これが私の最初の質問ですので、それはあまりにも長い間だ場合、私は謝罪)
あなたはそれをそれぞれのiteamのためにDetailsModelに保存しておきたいと思っています。それを私が見せたいと思っている基本情報とは何であれ、それを送る。そのperticular iteamをクリックした後、私はdetailsViewにそのiteamに対応するidを渡し、Information.Iは私のページをリフレッシュしないようにリクエストするAjaxコールを使用します。 –
あなたのURLパターンを示してください。 – Alasdair
@Alasdair言及してくれてありがとう、私はURLパターンが表示されるように自分の投稿を更新しました。 – GTech