前提・実現したいこと
■会員登録を行い、ログインをしてマイページで入力した情報を商品一覧ページに表示させました。
商品一覧ページに表示されている商品をクリックして商品詳細ページ遷移させたいです。
また、商品一覧に表示される商品は動的なリンクにしたいと考えております。
※商品一覧ページに表示される商品はmodels.pyのclass Userから取り出しております。
現在はDjango2で会員登録してログインした人だけが商品データを投稿できるアプリを開発しております。
HTMLにはBooststrap4を読み込んでおります。
発生している問題・エラーメッセージ
HTML上にリンクが表示されません。
それとエラーが出ます。
###エラーメッセージ
path('user/<int:user_id>/', register.views.product_detail,name='product_detail'), #←該当リンク NameError: name 'register' is not defined
該当のソースコード
html
1{% extends "register/base.html" %} 2{% block content %} 3<div class="container-fluid"> 4 <div class="row"> 5 <div class="col-sm-8" style="background:blue;"> 6<!--このリンクがHTML上で表示されません。↓--> 7 <ul> 8 {% for product in products %} 9 <a href="{% url 'product_detail' product.id %}">{{ user.nick_name }}</a> 10 {% endfor %} 11 </ul> 12 </div> 13 <div class="col-sm-4" style="background:aqua"> 14 <p>あ</p> 15 </div> 16 </div> 17</div> 18{% endblock %}
python
1#register/models.py アプリ直下のモデル 2 3from django.db import models 4from django.core.mail import send_mail 5from django.contrib.auth.models import PermissionsMixin 6from django.contrib.auth.base_user import AbstractBaseUser 7from django.utils.translation import ugettext_lazy as _ 8from django.utils import timezone 9from django.contrib.auth.base_user import BaseUserManager 10 11#省略… 12class User(AbstractBaseUser, PermissionsMixin): 13 """カスタムユーザーモデル.""" 14 15 email = models.EmailField(_('email address'), unique=True) 16 first_name = models.CharField(_('名'), max_length=30, blank=True) 17 last_name = models.CharField(_('姓'), max_length=150, blank=True) 18 nick_name = models.CharField(_('ニックネーム'), max_length=30, blank=False) 19 20 created_at = models.DateTimeField(default=timezone.now) 21
Pyhton
1#register/views.py アプリ直下のviews 2from django.conf import settings 3from django.contrib.auth import get_user_model 4from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin 5from django.contrib.auth.views import ( 6 LoginView, LogoutView 7) 8from django.contrib.sites.shortcuts import get_current_site 9from django.core.signing import BadSignature, SignatureExpired, loads, dumps 10from django.http import HttpResponseBadRequest 11from django.shortcuts import redirect, resolve_url 12from django.template.loader import render_to_string 13from django.views import generic 14from .forms import ( 15 LoginForm, UserCreateForm, UserUpdateForm 16) 17 18User = get_user_model() 19 20#省略… 21 22class UserUpdate(OnlyYouMixin, generic.UpdateView): 23 model = User 24 form_class = UserUpdateForm 25 template_name = 'register/user_form.html' 26 27 def get_success_url(self): 28 return resolve_url('register:user_detail', pk=self.kwargs['pk']) 29 30#リンクが動的になるようにした関数です↓ 31def product_detail(request, user_id): 32 try: 33 product = User.objects.get(id=User_id) 34 except User.DoesNotExist: 35 raise Http404 36 return TemplateResponse(request, 'register/ichiran.html', 37 {'product': product})
Python
1#register/urls.py アプリ直下のurls.pyです。 2 3from django.urls import path 4from . import views 5 6app_name = 'register' 7 8urlpatterns = [ 9 path('', views.Top.as_view(), name='top'), 10 path('login/', views.Login.as_view(), name='login'), 11 path('logout/', views.Logout.as_view(), name='logout'), 12 path('user_create/', views.UserCreate.as_view(), name='user_create'), 13 path('user_create/done', views.UserCreateDone.as_view(), name='user_create_done'), 14 path('user_create/complete/<token>/', views.UserCreateComplete.as_view(), name='user_create_complete'), 15 path('user_detail/<int:pk>/', views.UserDetail.as_view(), name='user_detail'), 16 path('user_update/<int:pk>/', views.UserUpdate.as_view(), name='user_update'), 17 path('products/<int:user_id>/', redister.views.product_detail,name='product_detail'), #←該当リンク 18]
HTML
1<!--商品詳細ページ--> 2<!DOCTYPE html> 3<html lang="en"> 4<head> 5 <meta charset="UTF-8"> 6 <title>Title</title> 7 8</head> 9<body> 10 11{{ user.nick_name }} 12 13</body> 14</html>
試したこと
関数の見直しやviews.pyのdefをクラス内に配置したりしました。
様々なことを行いました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。