Как сделать детальный просмотр в django html? - PullRequest
0 голосов
/ 29 апреля 2019

Как я могу показать данные на основе их идентификатора?

Теперь, если я нажму на один элемент, я получу URL, как это http://localhost:8000/novel/11

на данный момент это views.py, который я написал

 def novel_page(request, id):
     return render(request, 'novel.html')

, а urls.py -

 path('novel/<int:id>', views.novel_page, name='novel'),

и я хочу показать детали элемента с идентификатором, как то, что я передал в URL.

Например, если щелкнуть данные с идентификатором 11, система отобразит все данные на основе идентификатора 11.

Данные не из базы данных, а из файла XML с предварительным просмотром, подобным следующему:

<Collection>
    <DOC>
        <DOCNO>1</DOCNO>
        <Title>Neon Prey (A Prey Novel) Hardcover </Title>
        <Author>John Sandford</Author>
        <Text>
            This is novel 1
        </Text>
    </DOC>
    <DOC>
        <DOCNO>2</DOCNO>
        <Title>The Mother-in-Law</Title>
        <Author>Sally Hepworth</Author>
        <Text>
            This is novel 2
        </Text>
    </DOC>
    <DOC>
        <DOCNO>3</DOCNO>
        <Title>Saman</Title>
        <Author>Ayu Utami</Author>
        <Text>
            This is novel 3
        </Text>
    </DOC>
</Collection>

Это views.py для передачи данных в индекс

def display(request):
    if request.method == 'POST':
        text = request.POST['input_text']
        result = main.main(text)
        content = {'result': result}
        return render(request, 'index.html', content)
    return render(request, 'index.html')

и я показываю данные с этим кодом

{% for i in result %}
    <h4><a href="/novel/{{i.docno}}">{{i.title}}</a></h4>      
{% endfor %}

Спасибо.

Ответы [ 2 ]

2 голосов
/ 29 апреля 2019
<a href="{% url 'novel' id=i.docno %}">{{i.title}}</a>

Вы всегда должны использовать url для создания ссылки, если только это не особый случай, когда вам нужно сделать путь самостоятельно. В таком случае вам нужно написать собственный тег шаблона для этого.

1 голос
/ 29 апреля 2019

Ваша функция детализации должна запросить базу данных, чтобы привести конкретные данные в ID 11, для этого вам просто нужен запрос django. Таким образом, ваша функция будет выглядеть так:

views.py

def novel_page(request, id):

     qs = YourModelName.objects.get(id=id)           # <------This is what you add

     return render(request, 'novel.html', {'qs': qs})       #<---- Pass the qs as a dict
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...