質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

ウェブアプリケーション

ウェブアプリケーションとは、ウェブ上でアクセスされるアプリケーションのことを呼びます。この場合におけるウェブとは、インターネットやイントラネット上を意味します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

Djangoで、urls.py内のpathに2つのパラメーターを持たせる方法

ak_suzuki
ak_suzuki

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

ウェブアプリケーション

ウェブアプリケーションとは、ウェブ上でアクセスされるアプリケーションのことを呼びます。この場合におけるウェブとは、インターネットやイントラネット上を意味します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

2回答

0評価

2クリップ

254閲覧

投稿2019/06/19 13:02

概要

Djangoの学習をしております。

現在、「店」というテーブルを定義しており、その店ごとに毎月の「売上計画」テーブルを持っています。

「店」の詳細ページで、その「店」の「売上計画」の概要をリスト表示し、詳細ボタンをクリックするとその「売上計画」の詳細ページに遷移させようとしています。

URLを、
(1)店の詳細画面: xxx/shop/店名
(2)売上計画の詳細画面 :xxx/shop/店名/売上計画id
というように持たせたいと思い、urls.pyなどを設定しましたが、(1)はうまくできるものの、(2)の売上計画の詳細画面への遷移に、「店名」と「売上計画id」を渡すことが出来ずにエラーになってしまいました。

(2)を「xxx/shop/売上計画id」とすれば出来るの分かるのですが、どうしても階層構造のURL(店の下の階層に計画がある)にしたく、上記のようにしています。

環境

python: 3.7
django: 2.2.x

試したこと

py

(urls.py) from django.urls import path from . import views app_name = 'myapp' urlpatterns = [ path('', views.IndexView.as_view(), name='index'), path('shops/<str:name>', views.ShopDetail.as_view(), name='shop_detail'), path('shops/<str:name>/<int:id>', views.PlanDetail.as_view(), name='plan_detail'), ]

py

(views.py) from django.conf import settings from django.shortcuts import get_object_or_404, render, redirect, resolve_url from django.http import HttpResponse from django.views import generic from django.views.generic import ListView, DetailView, TemplateView from .models import Plan, Shop class IndexView(TemplateView): def get(self, request, *args, **kwargs): shop_list = Shop.objects.all() plan_list = Plan.objects.all().order_by('shop', 'month') params = { 'shop_list': shop_list, 'plan_list': plan_list, } return render(request, 'myapp/index.html', params) class ShopDetail(DetailView): model = Shop slug_field = 'name' slug_url_kwarg = 'name' def get_context_data(self, *args, **kwargs): plan_list = Plan.objects.filter(shop=kwargs['object']) params = { 'plan_list': plan_list, } return params

html

(shop_detail.html) <!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>WebAPP</title> </head> <body> <div class="container"> <div class="row"> <div class="col"> <h1>SHOP Detail</h1> <p>Shop名</p> <p>{{ object }}</p> {% for item in plan_list %} <p>{{ item.month }}月: <a href="{% url 'myapp:plan_detail' item.shop item.id %}">詳細をみる</a></p> {% endfor %} </div> </div> </div> </body> </html>

上記HTMLで詳細を見るボタンをクリックすると、
Generic detail view PlanDetail must be called with either an object pk or a slug in the URLconf.
というエラーが返ってきます。

ご教授いただけると幸いです。

よろしくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

ウェブアプリケーション

ウェブアプリケーションとは、ウェブ上でアクセスされるアプリケーションのことを呼びます。この場合におけるウェブとは、インターネットやイントラネット上を意味します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。