Я недавно задал вопрос о DetialViews и linkify, но понял, что проблема была не в linkify, а в том, чтобы показать подробный вид.Всякий раз, когда я пытаюсь отобразить подробный вид, я получаю «404 error».Как заставить это работать?Я буквально работал над этим в течение недели, пожалуйста, помогите.Я не знаю, где искать.
Вот шаблоны urls.py url: (Я пробовал несколько разных шаблонов и не могу заставить их работать.)
path('hospitals/', views.HospitalListView.as_view(), name='hospital_list'),
re_path(r'^hospitals/(?P<pk>\d+)$', views.HospitalDetailView.as_view(), name='hospital_detail')
Вот мои views.py:
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, primary_key):
hospital = get_object_or_404(Hospital, pk='primary_key')
return render(request, 'hospital_detail.html', {'hospital': hospital})
Вот мой models.py.
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 %}
Вот здесь 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 %}
РЕШЕНО: Спасибо всем за помощь.Я не знаю, что было не так.Я сделал несколько вещей, и это решило это.
- Я сменил основной ключ на название больницы, а не на uuid.Я просто назвал это первичным ключом.
- Я удалил свои базы данных и возобновил миграцию.
Это исправлено.Любая помощь в понимании, почему было бы здорово?