В Django, как я могу запросить базу данных MYSQL для вошедшего в систему пользователя? (т.е. результаты для конкретного пользователя без жесткого кодирования идентификатора пользователя) - PullRequest
0 голосов
/ 01 декабря 2019

Пока у меня это есть, извинения, я новичок в программировании - пытаюсь выучить Django и Python.

View:

def dashboard(request):
    return render(request, 'app/dashboard.html', {'my_custom_sql': my_custom_sql})

функция ниже ничего не выводит в шаблоне

def my_custom_sql(self):
    return self.request.CustomUser.customuser_set.all()

альтернатива, описанная выше, с использованием жестко закодированного необработанного SQL:

def my_custom_sql():
 current_user = 1
 with connection.cursor() as cursor:
     cursor.execute("SELECT first_name FROM customuser WHERE id = 
     %s",[current_user])
     row = cursor.fetchone()

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

Шаблон:

<h3> Displaying User's First Name </h3>

{% if user.is_authenticated %}

    <p>The first name: {{my_custom_sql}}</p>

{% endfor %}

1 Ответ

0 голосов
/ 01 декабря 2019

andtmc. Добро пожаловать в SO.

Вам необходимо закрыть if тег:

шаблон

{% if user.is_authenticated %}
    <p>The first name: {{my_custom_sql.first_name}}</p>
{% endif %}

views.py

def dashboard(request):
    return render(request, 'app/dashboard.html', {'my_custom_sql': my_custom_sql(request)})

def my_custom_sql(request):
    return CustomUser.objects.get(pk=request.user.pk)

В зависимости от вашей модели вы можете просто:

{% if user.is_authenticated %}
    <p>The first name: {{user.first_name}}</p>
{% endif %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...