[Django]DetailViewで404になる
Q&A
解決したいこと
DjangoでWebアプリを作成しているのですが、DetailViewで詳細画面を表示しようとすると404になってしまいます。
どうやら 00001 にあたるレコード は データベースにないよ と言われているんだろうと思うのですが、
実際にあるんです。 自分は pk のレコードを文字列型(CharField)にしてるのですが、それがだめなのでしょうか?
よろしくお願いいたします。
発生している問題・エラー
Page not found (404)
Using the URLconf defined in , Django tried these URL patterns, in this order: scheduleweb.urls
admin/
[name='login']
home/ [name='home']
sakusei/ [name='sakusei']
signup/ [name='signup']
user/ [name='user']
hensin/<int:pk> [name='hensin']
The current path, , matched the last one. hensin/00001
urls.py
from django.urls import path
from . import views
app_name="account"
urlpatterns = [
path("", views.LoginView.as_view(), name="login"),
path("home/", views.HomeView.as_view(), name="home"),
path("sakusei/", views.MendanSakuseiView.as_view(), name="sakusei"),
path("signup/", views.SignUpView.as_view(), name="signup"),
path("user/", views.UserView.as_view(), name="user"),
path("hensin/<int:pk>", views.MendanHensinView.as_view(), name="hensin"),
]
models.py
class MendanMaster(models.Model):
code_m = models.CharField(max_length=5, primary_key=True)
name_m = models.CharField(verbose_name= '面談名', max_length=16)
time_m = models.IntegerField(verbose_name= '面談時間', choices=MENDAN_TIME, default=0)
type_m = models.IntegerField(verbose_name= '面談タイプ', validators=[MinValueValidator(0),MaxValueValidator(1)], choices=MENDAN_TYPE, default=None)
place_m = models.IntegerField(verbose_name= '面談場所', choices=MENDAN_STATE, default=None)
state_m = models.IntegerField()
create_m = models.DateField(auto_now_add=True)
deadline_m = models.DateField(verbose_name= '締め切り日',)
start_m = models.DateField(verbose_name= '開始日',)
end_m = models.DateField(verbose_name= '終了日',)
yusen1_m = models.DateField(verbose_name= '1番優先日',)
yusen2_m = models.DateField(verbose_name= '2番優先日',)
yusen3_m = models.DateField(verbose_name= '3番優先日',)
yusen4_m = models.DateField(verbose_name= '4番優先日',)
yusen5_m = models.DateField(verbose_name= '5番優先日',)
def __str__(self):
return (self.code_m) + (self.name_m)
views.py
class HomeView(LoginRequiredMixin, ListView):
template_name = "account/Yakuinhome.html"
model = MendanMaster
context_object_name = "mendan_list"
def get_template_names(self):
if self.request.user.yakusyoku_s == 0:
template_name = "account/Yakuinhome.html"
else:
template_name = "account/Syainhome.html"
return [template_name]
class MendanHensinView(DetailView):
template_name = 'account/SyainHensin.html'
model = MendanMaster
Syainhome.html + SyainHensin.html
※抜粋
***home.html***
{% for MI in mendan_list %}
<p class="pk">
<a class="pp1" href="{% url 'account:hensin' MI.pk %}" >{{ MI.name_m }}</a>
<a class="pp3">{% if MI.place_m == 0 %}
Zoom
{% elif MI.place_m == 1 %}
本社
{% elif MI.place_m == 2 %}
HONDA社
{% endif %}</a>
<a class="pp4">{{ MI.deadline_m|date:"n/j:(D)" }}</a>
<a class="pp5">{{ MI.start_m|date:"n/j:(D)" }}~{{ MI.end_m|date:"n/j:(D)" }}</a>
<a class="pp6">~~~%</a>
<a class="pp7">{% if MI.state_m == 0 %}
受付中
{% elif MI.state_m == 1 %}
決定済
{% endif %}</a>
</p>
{% endfor %}
***hensin.html***
{% extends "account/base2.html" %}
{% block content %}
<header>
<h1>
<a href=""> スケジュールアプリ</a>
</h1>
<nav calss="nav">
<ul>
<li><a href="">ログアウト</a></li>
</ul>
</nav>
</header>
<form method="post" class="mother">
<div class="menu1">
<div class="demo">
</div>
<div>
<div class="p2">
{{ MI.name_m }}
</div>
<div class="p1">
<a>{{ MI.time_m }}</a>
</div>
</div>
</div>
<div class="ichiran">
</div>
</form>
{% endblock %}
0