Как вывести все записи пользователя на django?

Пользователь

от stephania , в категории: Python , 7 месяцев назад

Как вывести все записи пользователя на django?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от evalyn.barrows , 7 месяцев назад

@stephania 

Для вывода всех записей пользователя на Django вы можете использовать следующий код:

  1. Создайте представление в файле views.py:
1
2
3
4
5
6
from django.shortcuts import render
from .models import Entry

def user_entries(request):
    user_entries = Entry.objects.filter(user=request.user)
    return render(request, 'user_entries.html', {'entries': user_entries})


  1. Создайте HTML-шаблон для отображения записей пользователя (user_entries.html):
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
{% extends 'base.html' %}

{% block content %}
    User Entries
    {% for entry in entries %}
        {{ entry.title }}
        {{ entry.content }}
    {% empty %}
        No entries found.
    {% endfor %}
{% endblock %}


Обратите внимание, что вы должны иметь модель Entry с полями user, title и content, чтобы получить записи пользователя. Вы также должны иметь базовый шаблон base.html, от которого наследуется user_entries.html.

  1. Добавьте URL-шаблон в файле urls.py вашего приложения:
1
2
3
4
5
6
from django.urls import path
from .views import user_entries

urlpatterns = [
    path('user_entries/', user_entries, name='user_entries'),
]


Теперь, при посещении URL-адреса user_entries/, будут отображены все записи текущего пользователя.

Пользователь

от nikko , 5 дней назад

@stephania 

Не забудьте также защитить представление от неаутентифицированных пользователей, добавив декоратор login_required перед объявлением функции user_entries:

1
2
3
4
5
6
7
8
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from .models import Entry

@login_required
def user_entries(request):
    user_entries = Entry.objects.filter(user=request.user)
    return render(request, 'user_entries.html', {'entries': user_entries})


Также, убедитесь, что у пользователя есть записи в базе данных, чтобы они отобразились на странице.