Хотите показать подробный вид, нажав на ссылку в виде списка - PullRequest
1 голос
/ 03 мая 2020

Я хочу показать подробности из школы, которые покажут всем ученикам, но когда я запускаю код, он не находит URL, я искал ответ по всей сети, но все еще не получил его, Дело в том, чтобы показать список всех школ в списке. html файл, который работает нормально, но когда я хочу щелкнуть элемент из этого списка, он должен показать детали из этой школы, которые будут все ученики, посещающие эту школу, но она возвращает ошибку 404, говоря, что не нашла URL.

####MODELS

# Create your models here.
class School(models.Model):
    name = models.CharField(max_length=256)
    principal = models.CharField(max_length=256)
    location = models.CharField(max_length=256)

    def __str__(self):
        return self.name

class Students(models.Model):
    name = models.CharField(max_length=256)
    age = models.PositiveIntegerField()
    school = models.ForeignKey(School,on_delete=models.CASCADE,related_name='students')

    def __str__(self):
        return self.name

####VIEWS
from django.views.generic import View,DetailView,ListView
from .models import *

# Create your views here.
class Index(View):
    def get(self,request):
        return HttpResponse('Hello World')

class SchoolList(ListView):
    model = School
    template_name = 'firstapp/list.html'
    context_object_name = 'School'

class SchoolDetails(DetailView):
    model = School
    template_name = 'firstapp/detail.html'
    context_object_name = 'School_detail'



####URLS
from django.urls import path
from . import views

urlpatterns = [
    path('list/',views.SchoolList.as_view(),name='list'),
    path('School_detail/<int:pk>',views.SchoolDetails.as_view(),name='details')
]

####LIST HTML

{%extends 'firstapp/base.html'%}
{%block body_block%}

<h1>Here is a list of the schools!</h1>
{%for school in School%}
<p><a href="{{school.id}}">{{school.name}}</a></p>
{%endfor%}
{%endblock%}


####DETAIL HTML

{%extends 'firstapp/base.html'%}
{%block body_block%}

{%for student in school_detail.students.all%}
<p>{{student.name}}</p>
{%endfor%}

{%endblock%}

Ответы [ 2 ]

1 голос
/ 03 мая 2020

Ваша ссылка не определена правильно

<p><a href="{{school.id}}">{{school.name}}</a></p>

должно быть

<p><a href="{% url 'details' school.id%}>{{school.name}}</a></p>

Дайте мне знать, если это решит проблему

1 голос
/ 03 мая 2020

Это одна из многих причин, по которой использование тега шаблона {% url &hellip; %} [Django -doc] является хорошей идеей, потому что ошибки труднее делать, когда Вы создаете URL в шаблоне.

URL должен быть School_detail/{{school.pk}}, но, как уже было сказано, лучше не отображать это таким образом:

<p><a href="<b>{% url 'details' school.id %}</b>">{{school.name}}</a></p>

С этим Django будет искать path(..), где name='details', и заменит (первый) параметр на school.pk.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...