Django详细信息视图返回404错误(其他stackoverflow解决方案不起作用)
我最近问了一个关于DetialViews和linkify的问题,但我意识到,问题不在于linkify,而在于如何显示细节视图。每当我试图显示细节视图时,就会出现“404错误”。如何让它工作?我已经为此工作了一周,请帮忙。我不知道去哪里找 下面是url.py url模式:(我尝试了一系列不同的模式,但都无法正常工作。) 这是我的模特Django详细信息视图返回404错误(其他stackoverflow解决方案不起作用),django,django-views,Django,Django Views,我最近问了一个关于DetialViews和linkify的问题,但我意识到,问题不在于linkify,而在于如何显示细节视图。每当我试图显示细节视图时,就会出现“404错误”。如何让它工作?我已经为此工作了一周,请帮忙。我不知道去哪里找 下面是url.py url模式:(我尝试了一系列不同的模式,但都无法正常工作。) 这是我的模特 class Hospital(models.Model): """Model representing Hospitals.""" name = mo
class Hospital(models.Model):
"""Model representing Hospitals."""
name = models.CharField(max_length=200, primary_key=True)
hopid = models.UUIDField(default=uuid.uuid4, help_text='Unique ID for this particular hospital in database')
location_text = models.CharField(max_length = 800)
class Meta:
ordering = ['hopid']
def __str__(self):
"""String for representing the Model object."""
return f'{self.name} ({self.location_text})'
这是我的html文件-hospital_list.html
{% extends "base_generic.html" %}
{% block content %}
<h1>Hospital List</h1>
{% if hospital_list %}
<ul>
{% for hospital in hospital_list %}
<li>
<a href="{% url 'hospital_detail' pk=hospital.pk %}">{{ hospital.name }}</a> ({{hospital.location_text}})
</li>
{% endfor %}
</ul>
{% else %}
<p>There are no hospitals listed in your area.</p>
{% endif %}
{% endblock %}
{%extensed“base_generic.html”%}
{%block content%}
医院名单
{%if医院_列表%}
{医院内医院的百分比\u列表%}
-
({{hospital.location_text}})
{%endfor%}
{%else%}
您所在地区没有列出任何医院
{%endif%}
{%endblock%}
这是hospital_detail.html
{% extends "base_generic.html" %}
{% block content %}
<h1> Hospital Name: {{ hospital.name }}</h1>
<p><strong> Location: </strong>{{ hospital.location_text }}</p>
<p><strong> Phone Number:</strong> {{ hospital.phone }}</p>
<p><strong> Reviews: {{ hospital.reviews }</p>
{% endblock %}
{%extensed“base_generic.html”%}
{%block content%}
医院名称:{{Hospital.Name}
位置:{{hospital.Location\u text}
电话号码:{{hospital.Phone}
评论:{{hospital.Reviews}
{%endblock%}
解决:谢谢大家的帮助。我不知道出了什么问题。我做了一些事情,它解决了问题
这就解决了问题。有什么帮助来理解为什么会很好吗?可能是因为您正在为pk分配一个字符串
class HospitalListView(generic.ListView):
model = Hospital
context_object_name = 'hospital_list'
template_name = 'hospital_list.html'
class HospitalDetailView(generic.DetailView):
model = Hospital
def hospital_detail_view(request, pk): # change here
hospital = get_object_or_404(Hospital, pk=pk) #oldone->pk='primary_key')
return render(request, 'hospital_detail.html', {'hospital': hospital})
也可以在URL中尝试:
path('hospitals/<int:pk>', views.HospitalDetailView.as_view(), name='hospital_detail')
path('hospitals/',views.HospitalDetailView.as\u view(),name='hospital\u detail')
即使这不起作用,请确保您在视图中接收到pk值,我认为这是唯一的原因。尝试在url中打印pk值,以了解您是否正确接收到它。可能是因为您正在为pk分配字符串
class HospitalListView(generic.ListView):
model = Hospital
context_object_name = 'hospital_list'
template_name = 'hospital_list.html'
class HospitalDetailView(generic.DetailView):
model = Hospital
def hospital_detail_view(request, pk): # change here
hospital = get_object_or_404(Hospital, pk=pk) #oldone->pk='primary_key')
return render(request, 'hospital_detail.html', {'hospital': hospital})
也可以在URL中尝试:
path('hospitals/<int:pk>', views.HospitalDetailView.as_view(), name='hospital_detail')
path('hospitals/',views.HospitalDetailView.as\u view(),name='hospital\u detail')
即使这不起作用,请确保您在视图中接收到pk值,我认为这是唯一的原因。尝试在url中打印pk值,以了解您是否正确接收到pk值。通用视图是为“不要重复您自己”而构建的,请尝试下面的代码 网址 浏览器内url exmaple即pk=2
通用视图是为“不要重复自己”而构建的,请尝试下面的代码 网址 浏览器内url exmaple即pk=2 在views.py中
class HospitalDetailView(generic.DetailView):
model = Hospital
template_name = 'hospital_detail.html'
在模板中
{% extends "base_generic.html" %}
{% block content %}
<h1>Hospital List</h1>
<ul>
{% for hospital in hospital_list %}
<li>
<a href="{% url 'hospital_detail' hospital.pk %}">{{ hospital.name }}</a>
({{hospital.location_text}})
</li>
</ul>
{% empty %}
<p>There are no hospitals listed in your area.</p>
{% endfor %}
{% endblock %}
{%extensed“base_generic.html”%}
{%block content%}
医院名单
{医院内医院的百分比\u列表%}
-
({{hospital.location_text}})
{%empty%}
您所在地区没有列出任何医院
{%endfor%}
{%endblock%}
在url.py中
path('hospitals/<int:pk>/', views.HospitalDetailView.as_view(), name='hospital_detail')
path('hospitals/',views.HospitalDetailView.as_view(),name='hospital_detail')
这将解决您的问题。在views.py中
class HospitalDetailView(generic.DetailView):
model = Hospital
template_name = 'hospital_detail.html'
在模板中
{% extends "base_generic.html" %}
{% block content %}
<h1>Hospital List</h1>
<ul>
{% for hospital in hospital_list %}
<li>
<a href="{% url 'hospital_detail' hospital.pk %}">{{ hospital.name }}</a>
({{hospital.location_text}})
</li>
</ul>
{% empty %}
<p>There are no hospitals listed in your area.</p>
{% endfor %}
{% endblock %}
{%extensed“base_generic.html”%}
{%block content%}
医院名单
{医院内医院的百分比\u列表%}
-
({{hospital.location_text}})
{%empty%}
您所在地区没有列出任何医院
{%endfor%}
{%endblock%}
在url.py中
path('hospitals/<int:pk>/', views.HospitalDetailView.as_view(), name='hospital_detail')
path('hospitals/',views.HospitalDetailView.as_view(),name='hospital_detail')
这将解决您的问题。谢谢您的回答!我已经尝试过了。它确实打印了字符串。下面是我得到的错误。也许它有帮助:当前路径,hospitals/(?P977db815-8248-4871-9305-865490174495[\w\d-]+)/,与其中任何一个都不匹配。请求方法:获取请求URL:感谢您的响应!我已经尝试了此操作。它确实打印字符串。下面是我得到的错误。可能有帮助:当前路径,hospitals/(?P977db815-8248-4871-9305-865490174495[\w\d-]+)/,与其中任何一个都不匹配。请求方法:获取请求URL:如果您手动键入URL,那么它是否有效?我刚刚尝试手动输入hospital/uuid/但它不起作用。您将如何手动输入它?checkout@JR您是否在URL中使用uuid:like/hospital/23-304kd03-4-30ddo-3/是否希望从模型中获取hopid字段的详细信息如果您手动输入lly键入url然后它工作吗?我刚刚尝试手动输入hospital/uuid/但它不工作。您将如何手动输入?checkout@JR您是否在url中使用uuid:like/hospital/23-304kd03-4-30ddo-3/您想要模型中hopid字段的详细信息谢谢您的回复!我真的很感激。我尝试了,但仍然不起作用k、 我仍然发现了“404错误”。Django使用django1.URL中定义的URLconf尝试了以下URL模式:admin/[name='index']lookup/[name='lookup']results/[name='results']hospitals/[name='hospital'u list']^hospitals/[name='hospital'u detail']post/[name='post'new']contact/[name='contact']about/[name='about']mapview/[name='mapview']^static/(?P.*)$当前路径,hospitals/(?P977db815-8248-4871-9305-865490174495[\w\d-]+)/,与其中任何一个都不匹配。您应该将
pk
作为integer
而不是uuid
传递。签出更新的代码。可能我不理解,但当我输入您的代码并在浏览器中输入此代码时,我得到了相同的错误:当前路径hospitals/2/,与这些路径中的任何一个都不匹配。我缺少什么吗?我是Django的新手,所以我取消了可能是有限的。@Anjaneyulu,我在第一次评论中与您共享了回溯。这只是404错误页面,有以下内容:Django使用django1.URL中定义的URLconf,尝试了这些URL模式,顺序如下:admin/[name='index']lookup/[name='lookup']results/[name='results']hospitals/[name='hospital.\u list']^hospitals//[name='hospital\u detail']post/[name='post\u new']contact/[name='contact']ab