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

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

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

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Python 3.x

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Q&A

解決済

1回答

1852閲覧

【Django2】商品の詳細ページへ遷移させたい

nre

総合スコア35

Django

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Python 3.x

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

0グッド

0クリップ

投稿2019/08/06 09:20

編集2019/08/06 09:22

前提・実現したいこと

■会員登録を行い、ログインをしてマイページで入力した情報を商品一覧ページに表示させました。
商品一覧ページに表示されている商品をクリックして商品詳細ページ遷移させたいです。
また、商品一覧に表示される商品は動的なリンクにしたいと考えております。
※商品一覧ページに表示される商品は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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「 NameError: name 'register' is not defined 」のメッセージのとおりそのままですが、名前 register がそのスコープに存在しないことがエラーの原因ではないでしょうか。

プロジェクトの構成がどのようになっているかわかりませんが、エラーが出ているファイルの先頭に

python

1import register

と書く等して register をどこかから持ってくる必要があるのではないかと思います。

あるいは register が余計で、単純に register. を削除すれば解決するの、かもしれません:

patch

1- path('products/<int:user_id>/', redister.views.product_detail,name='product_detail'), #←該当リンク 2+ path('products/<int:user_id>/', views.product_detail,name='product_detail'), #←該当リンク

(質問文には redisterregister の 2 パターンがありますが、どちらが正なのかわからないので正しい方で読み替えてください)

投稿2019/08/09 05:31

gh640

総合スコア1407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問