前提
現在、予約注文システムを作成しています。
店舗名を選択し、その店舗の予約可能なカレンダーを表示しており、
数字が表示されている枠にはリンクで飛べるような設定をしています。
###実現したいこと
1.数字を押した後、商品一覧を表示して商品を選択できるようにする
2.商品を選択後、選択した商品名、注文する個数、注文商品の値段が表示する。
(注文数は+-などで変更可能にしたい)
3.商品選択画面にて、任意の注文数を選択後、一時データを保存し商品一覧に戻る
4.商品一覧にて、注文確定ボタンを押すことによりDBに予約注文を反映させる。
発生している問題・エラーメッセージ
困っている問題としては、カレンダーのリンクを押した先(商品一覧)に
商品選択画面へ移行するリンクを張ると商品一覧にてエラーが表示されてしまい、思った動作になりません。
※現在はリンクを切っています。
下記の画面は商品一覧になります。
エラーメッセージ
NoReverseMatch at /shop/2/item_list/2020/8/25/1020/ Reverse for 'item_list' with no arguments not found. 1 pattern(s) tried: ['shop\/(?P<pk>[0-9]+)\/item_list\/(?P<year>[0-9]+)\/(?P<month>[0-9]+)\/(?P<day>[0-9]+)\/(?P<minute>[0-9]+)\/$']
エラー内容的にはurls.pyが悪さしているようにも見えますが、どう直していいかもわからないためお手上げ状態です。
該当のソースコード
item_list.html
{% extends 'testapp/base.html' %} {% load calendar %} {% block content %} <h1>{{ shop.shopname }}</h1> <p>{{ view.kwargs.year }}年{{ view.kwargs.month }}月{{ view.kwargs.day }}日 {% get_display_time view.kwargs.minute %}時に予約</p> <form action="" method="POST">{% csrf_token %} <div> {% for item in item %} <div><a href="{% url 'testapp:item_order' %}" >{{item.itemname }}</a></div> <!-- item_orderが商品選択画面です。item.itemnameはitemに登録されている商品名を表示しています。--!> {% endfor %} </div> <input type="button" value="Back" onClick="javascript:history.go(-1);"> </form> {% endblock %}
urls.py
from django.urls import path from . import views urlpatterns = [ path('', views.Company_List.as_view(), name='company_list'), path('company/<int:pk>/shop/', views.Shop_List.as_view(), name='shop_list'), path('shop/<int:pk>/calendar/', views.Calendar.as_view(), name='calendar'), path('shop/<int:pk>/calendar/<int:year>/<int:month>/<int:day>/', views.Calendar.as_view(), name='calendar'), path('shop/<int:pk>/item_list/<int:year>/<int:month>/<int:day>/<int:minute>/', views.Item_List.as_view(), name='item_list'), path('shop/<int:pk>/item_list/<int:year>/<int:month>/<int:day>/<int:minute>/item_order/', views.Item_Order, name='item_order'),
views.py
class Item_List(generic.TemplateView): model = Schedule fields = ('name',) template_name = 'testapp/Item_List.html' def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['shop'] = get_object_or_404(Shop, pk=self.kwargs['pk']) item = Item.objects.values() context['item'] = item return context
試したこと
商品選択画面に行くURLをDjangoの表記{% url 'testapp:item_order' %}や
href="testapp/item_order.html"も試しましたがerrorが表示されうまく動きませんでした。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/26 02:25 編集
2020/08/26 07:32 編集
2020/08/26 07:58