djangoを勉強中しているものです。
現在ログイン機能(accounts)とブログ機能(my_apps)を備えたプロジェクトを試しに作っているのですが、下記のエラーに遭遇しました。
原因はおそらくpkに値がうまく渡されていないことによるURLのミスマッチだと思うのですが、書き方に誤りがありますか?
ちなみにaccountsアプリの方は、汎用ビューで普通に動いています。
1日かけても解決策がわからないので、よろしければアドバイスを頂けないでしょうか?
ErrorLog
1Reverse for 'service_detail' with arguments '('',)' not found. 1 pattern(s) tried: ['service_detail/(?P<pk>[0-9]+)/$']
base
1<!--accountsアプリ--> 2<a href="{% url 'accounts:login'%}" class="top-bar__item top-bar__sign-in" ><i class="ui-user"></i>ログイン</a> 3<a href="{% url 'accounts:signup'%}" class="top-bar__item top-bar__sign-in" ><i class="ui-user"></i>会員登録</a> 4<a class="top-bar__item top-bar__sign-in" href="{% url 'accounts:user_detail' user.pk %}">ユーザー情報閲覧</a> 5<a class="top-bar__item top-bar__sign-in" href="{% url 'accounts:user_update' user.pk %}">ユーザー情報更新</a> 6<!--my_appsアプリ--> 7<a class="top-bar__item top-bar__sign-in" href="{% url 'my_apps:service_detail' service.pk %}">サービス情報閲覧</a> 8<a class="top-bar__item top-bar__sign-in" href="{% url 'my_apps:service_update' service.pk %}">サービス情報更新</a>
models
1#my_project/my_apps/models.py 2from django.conf import settings 3from django.db import models 4from django.utils import timezone 5 6class Service(models.Model): 7 user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.PROTECT) 8 title = models.CharField('タイトル', max_length=200, blank=True) 9 text = models.TextField('本文', blank=True) 10 category = models.ForeignKey(Category, verbose_name='カテゴリ', on_delete=models.PROTECT, blank=True) 11 tags = models.ManyToManyField(Tags, verbose_name="タグ", blank=True) 12 date = models.DateTimeField('作成日', default=timezone.now)
urls
1#my_project/my_apps/urls.py 2from django.urls import path 3from . import views 4 5app_name = 'my_apps' 6 7urlpatterns = [ 8 path('', views.index, name='index'), 9 path('service/', views.ServiceCreateView.as_view(), name='service'), 10 path('service_detail/<int:pk>/', views.ServiceDetailView.as_view(), name='service_detail'), 11 path('service_update/<int:pk>/', views.ServiceUpdateView.as_view(), name='service_update'), 12]
views
1#my_project/my_apps/view.py 2from django.shortcuts import render,redirect 3from .models import Service, Order 4from .forms import ServiceCreateForm, ServiceUpdateForm 5from django.views import generic 6 7class ServiceCreateView(generic.CreateView): 8 models = Service 9 form_class = ServiceCreateForm 10 template_name = 'my_apps/service-add.html' 11 12class ServiceDetailView(generic.DetailView): 13 models = Service 14 template_name = 'my_apps/service-detail.html' 15 16class ServiceUpdateView(generic.UpdateView): 17 models = Service 18 form_class = ServiceUpdateForm 19 template_name = 'my_apps/service-update.html' 20
Django 2.x.x
Python 3.x
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/21 12:48
2019/05/25 07:35